IOS開發中遇到過的各種坑洞
做ios開發那麼多年了,遇到不少難題,也踩過不少坑洞,本來沒想要寫這篇文章的,但是鑑於以下幾點因素決定對多年遇到過的且能回憶起來的做個筆記。
1、在開發中每次遇到問題,死腦地想解決方案,最後終於解決了滿滿的成就感。不過下一次再遇到這個問題,不自覺地就再次踏進去這個坑,如何解決,記錄下來方便以後好閱讀。
2、為其他同樣遇到這種坑的開發者一個好的參考吧。
3、在面試的時候,考官最喜歡考的就是這些莫名其妙的坑了,也可以當作面試寶典看。
曾經遇過的坑:
1、修改導航欄顏色
這個問題對有經驗的開發者來說不是問題,但是當年筆者剛入行時,確實被這個問題折騰了好久。比如想設定導航欄的顏色為藍色
self.navigationController.navigationBar.backgroundColor = [UIColor blueColor];
執行,然後......????這特麼是藍色?筆者確定自己不是色盲
2、輸入中文時限制字元長度
限制字母、數字、符號等其他非中文字元的長度大家應該都知道咋整,但如果是中文輸入法,這就比較蛋疼了。舉個例子,限制長度為5,輸入“我愛寫程式碼”,當已經輸入“我愛寫”兩字,然後輸入“程式碼”時就會出現如下情況
根本寫不進去啊,這是為什麼呢?因為輸入的拼音也被計算在了字串長度之內,導致輸入“da”以後就不能繼續輸入了,可通過下面的辦法解決
3、手機錄音或通話時,app介面整體下移
當你的iphone在錄音或者通話時,開啟app你會發現,整個介面都下移了20畫素,這個問題對於scrollView、tableView等可以垂直滾動的檢視可能沒有太大影響,但是對於那些不能滾動的檢視,就有可能底部被遮蓋20畫素
筆者在網上查閱了資料,也試過多種方法,這個問題依然存在,最後筆者不得不使用大絕招來解決,何為大絕招?很簡單,位置尺寸寫死。專案中導航控制器是自定義的,在自定義的類中新增如下程式碼就OK了
4、點選導航欄下方也會觸發導航欄按鈕的點選事件
如圖所示,每次想選中右上角的圖片,結果總是觸發“取消”事件,明明沒有點到導航欄上面去,問題的原因不清楚,解決方法建立一個UINavigationBar的分類,重寫hitTest方法
5、介面莫名其妙下移
這個問題跟第一個的問題一樣,都是比較基礎的問題,有經驗的人都知道如何解決,但是筆者曾經也被折磨過
為什麼下面textView的內容不是從最上面開始的,而且還不能滾上去,當初真的被這種情況折騰的死去活來的,改frame,改約束,都沒效果。後來才知道,當有導航控制器時,系統會預設將第一個新增的scrollView或其子類檢視的內容下移64個畫素,下面的textView是先新增的,所以其內容被下移了,而上面的卻沒有,解決方法是在控制器里加上下面這句程式碼
self.automaticallyAdjustsScrollViewInsets = NO;
6、自定義相機照片擷取
這個問題說難不難,說簡單也不簡單,筆者當時確實花了很長一段時間才弄清楚,但是當問題解決後,感覺這特麼也不復雜啊,之前怎麼就沒整明白呢
問題是這樣的,在使用自定義相機拍完照後,需要對圖片的指定區域(藍色方框內的區域)進行擷取然後上傳,這裡存在兩個問題
拍攝時你所看到的區域,跟實際拍出來的區域是不一樣的
由於拍攝時所看到檢視寬高比與實際拍攝出來的圖片的寬高比並不一致,所以導致圖片經過等比例縮放到寬度一樣時,高度有一部分超出了我們的可視範圍,首先,我們要計算出超出部分的高度,超出部分的高度計算完後,我們就要來計算藍色方框(_circleView,_cameraView的子控制元件)的座標了,然後根據計算好的frame擷取圖片就ok了。
CGRect rect = CGRectMake(x, y, width,height);
CGImageRef tailorImageRef = CGImageCreateWithImageInRect(photo.CGImage, rect);
UIImage *tailorImage = [UIImage imageWithCGImage:tailorImageRef];
結束: 開發得越久,遇到的坑就越多,遠遠還不止這些,以後再補上吧!
相關文章
- iOS開發中各種關鍵字的區別iOS
- iOS 總結遇到的各種坑兒iOS
- iOS 中的各種鎖iOS
- thinkphp3.2,微信JS-SDK開發過程中遇到的各種問題與細節分享PHPJS
- iOS 開發中遇到的手勢衝突iOS
- IOS日常開發中遇到的小問題iOS
- iOS開發中的幾種鎖iOS
- iOS開發中遇到的那些坑,持續更新iOS
- android開發過程中遇到的問題Android
- 使用MySQL時遇到的各種坑MySql
- iOS開發中的21種設計模式iOS設計模式
- 開始使用SmartDraw繪製開發中的各種圖形
- Flutter開發過程中遇到的問題記錄Flutter
- iOS 開發中遇到的一些證書問題iOS
- iOS 開發中 runtime 常用的幾種方法iOS
- iOS開發中遇到BAD_ACCESS怎麼辦?iOS
- 皮膚開發過程中遇到的3個問題
- 軟體開發中會遇到的幾種實用圖例
- iOS各種支付大全iOS
- 開發中遇到的錯誤
- iOS 中 各種 Cell 和 HeaderView 複用iOSHeaderView
- [經驗]iOS開發-記錄下在開發過程中遇到的問題的解決方案及經驗總結-1iOS
- hadoop啟動遇到的各種問題Hadoop
- 軟體開發各個階段用到的各種圖
- iOS 開發中你是否遇到這些經驗問題iOS
- Springboot 開發過程中遇到坑點 (一)Spring Boot
- 開發過程中遇到問題該怎麼辦?
- 遊戲開發學院:小談遊戲中的各種平衡(轉)遊戲開發
- 值得收藏!Web開發的各種效能工具Web
- 開發作業系統的各種方法作業系統
- JPA 開發中遇到的錯誤
- 各種開發工具索引/目錄索引
- iOS 各種螢幕尺寸iOS
- iOS開發中陣列常用的五種遍歷方式iOS陣列
- 面試可能會遇到的各種問題講解面試
- iOS 開發中你是否遇到這些經驗問題(二)iOS
- iOS 開發中你是否遇到這些經驗問題(一)iOS
- 玩轉iOS開發:iOS中的GCD開發(一)iOSGC