導航欄的高度的適配
iOS 11以前城须,狀態(tài)欄statusBar的高度是20规哲,底部tabbar的高度是49敬矩。
iOS 11之后蝎土,狀態(tài)欄的statusBar的高度變成了44, 底部的tabbar變成了83
所以建議還是抽取成宏瓷们。
安全區(qū)域的問題
iOS 11之前挑势, automaticallyadjustsscrollviewinsets經(jīng)常被設(shè)置成NO淤齐,由開發(fā)者去控制處理留白和坐標問題。
iOS 11后涣狗,把這個automaticallyadjustsscrollviewinsets廢棄谍婉,新增了contentInsetAdjustmentBehavior舒憾,它是個枚舉類型的值,我們只需要把其設(shè)置成never就行了
tableview的組頭和組尾高度變大問題
我們需要在初始化的把這三屬性設(shè)置成0即可( estimatedRowHeight屡萤、 estimatedSectionHeaderHeight estimatedSectionFooterHeight)
導航欄標題titleview的問題
iOS 11中會出現(xiàn)蜷縮成一起的現(xiàn)象 不過它現(xiàn)在支持autolayout珍剑。所以我們需要把它擴展出去, 只需要在你自定義的titleview中實現(xiàn)
- (CGSize)intrinsicContentSize {
return UILayoutFittingExpandedSize;
}
定位相關(guān)
問題描述:無法定位死陆,而且程序在安裝后第一次訪問定位權(quán)限時招拙,無定位權(quán)限提示對話框彈出。
原因:iOS11 定位相關(guān)的權(quán)限做了更改措译,在iOS11上使用了新的定位權(quán)限key别凤。
解決方案:
如果原來申請的權(quán)限是始終允許NSLocationAlwaysUsageDescription,那么需要在保留原來的key的基礎(chǔ)上增加NSLocationWhenInUseUsageDescription和NSLocationAlwaysAndWhenInUsageDescription领虹。
具體參考另篇博客:http://blog.csdn.net/dangyalingengjia/article/details/77965029
系統(tǒng)相冊相關(guān)
問題描述:iOS11上讀寫相冊的照片時發(fā)生崩潰规哪。
原因:由于相冊相關(guān)權(quán)限的key發(fā)生了變化。用戶在沒有權(quán)限的情況下塌衰,訪問相冊導致崩潰诉稍。
解決方案:
iOS11之前相冊對應(yīng)的key是NSPhotoLibraryUsageDescription,iOS11對應(yīng)的Key是NSPhotoLibraryAddUsageDescription最疆。同定位的Key一樣杯巨,由于key沒有兼容性,所以需要保留原key以兼容iOS10及之前版本努酸。
關(guān)于UIScrollView初始位置變化的問題
由于iOS11廢棄了UIViewController的automaticallyAdjustsScrollViewInsets屬性服爷,位置需要手動調(diào)整。
iOS11中為UIScrollView新增了contentInsetAdjustmentBehavior屬性获诈,結(jié)合UIAppearance協(xié)議仍源,可以統(tǒng)一在appDelegate的didFinishLaunchingWithOptions的最開始增加:
if #available(iOS 11.0, *) {
UIScrollView.appearance().contentInsetAdjustmentBehavior = .never
}
注意
如果你需要做一個嵌套WebView的畫面,直接將WebView加到self.view中時舔涎,那就需要對WebView的ScrollView進行單獨處理:
UIScrollView.appearance().contentInsetAdjustmentBehavior = .automatic
對于系統(tǒng)的相冊選擇視圖UIImagePickerController笼踩,需要單獨處理:
再打開系統(tǒng)相冊前設(shè)定:
UIScrollView.appearance().contentInsetAdjustmentBehavior = .automatic
從相冊返回后設(shè)定:
UIScrollView.appearance().contentInsetAdjustmentBehavior = .never
第三方庫WKWebViewJavascriptBridge
問題描述:在WKWebView的回調(diào)函數(shù)中崩潰:
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
原因:WKWebViewJavascriptBridge內(nèi)部邏輯問題
解決方案:WKWebViewJavascriptBridge最新的6.0.2上仍然沒有解決這個問題,可以參考github issue#272
只能手動修改源文件亡嫌,將WKWebViewJavascriptBridge.m 的L153的if改為 else if
修改后:????????????????????????修改前:
WKWebView
UIVisualEffectView相關(guān)的崩潰
iOS11之前可以將UIView直接加到(addSubview)UIVisualEffectView上面戳表,但是在iOS11上面這么做會導致crash。
正確的姿勢是:將UIViewaddSubview到UIVisualEffectView的contentView上昼伴。
關(guān)于上傳商店相關(guān)改變
之前沒有1024*1024的icon匾旭,同樣可以提交商店審核,但是現(xiàn)在不行了圃郊。你會在用Application Loader上傳完成后收到一個warning价涝,但是在提交審核(包括beta測試版本)時被告知不允許提交。
上傳被拒
`
而且注意持舆,這個1024的圖片一定要去掉alpha通道色瘩∥苯眩可以在github上搜索Alpha-Channel-Remover,用這個工具去掉alpha通道居兆。
iPhone X機型判斷
目前還不知道iPhone X的Devive Model覆山,可以拿分辨率來判斷。
#define iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125,
2436), [[UIScreen mainScreen] currentMode].size) : NO)
Color適配
iPhone X支持P3色彩空間泥栖,從而產(chǎn)生更豐富簇宽,比sRGB更飽和的顏色。
+(UIColor*)colorWithDisplayP3Red:(CGFloat)displayP3Red
green:(CGFloat)green
blue:(CGFloat)blue
alpha:(CGFloat)alpha
NS_AVAILABLE_IOS(10_0);
-(UIColor*)initWithDisplayP3Red:(CGFloat)displayP3Red
green:(CGFloat)green
blue:(CGFloat)blue
alpha:(CGFloat)alpha
NS_AVAILABLE_IOS(10_0);