1.iPhone X 上運(yùn)行有黑色區(qū)域問(wèn)題
解決方案:
使用LaunchScreen來(lái)當(dāng)做入場(chǎng)頁(yè) 或者 修改Assets中的LaunchImage,添加iPhoneX的Launch圖1125*2436(豎屏),注意這邊的圖片像素必須按要求來(lái)
2.navigationBar適配
iOS11前導(dǎo)航欄的高度是64,其中statusBar的高度為20,而iPhoneX的statusBar高度變?yōu)榱?4,如果是自定義的NavigationBar,這部分需要做相應(yīng)的適配。
目前的想法是寫(xiě)一個(gè)Util類,提供獲取導(dǎo)航欄高度的方法
eg:
@implementation TestUtil
- (CGFloat)navigationBarHeight {
if (IS_iPhoneX) {
return 88.0f;
}
return 64.0f;
}
@end
define IS_iPhoneX ([UIScreen mainScreen].bounds.size.width == 375 && [UIScreen mainScreen].bounds.size.height == 812)
3.tabBar適配
iPhoneX的底部增加了虛擬Homeq區(qū),由于安全區(qū)域的原因默認(rèn)tabBar的高度由49變?yōu)?3,增高了34,所以自定義的底部TabBar也需要需改其適配方案。
宏定義
//適配iPhoneX
letLL_iPhoneX = (kScreenW == Double(375.0) && kScreenH == Double(812.0) ?true:false)
letkNavibarH = LL_iPhoneX ? Double(88.0) : Double(64.0)
letkTabbarH = LL_iPhoneX ? Double(49.0+34.0) : Double(49.0)
letkStatusbarH = LL_iPhoneX ? Double(44.0) : Double(20.0)
適配問(wèn)題的補(bǔ)充
3.1. 滾動(dòng)條高度跳動(dòng)、上下拉刷新問(wèn)題:
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
3.2. 列表/頁(yè)面偏移
本來(lái)是這樣的
if (@available(iOS 11.0, *)){
_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
目前發(fā)現(xiàn)所有的Scrollview 及其子類都需要設(shè)置 contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever ,工程中大量使用列表的同學(xué)不要慌,不要忙,因?yàn)閁IView及其子類都遵循UIAppearance協(xié)議,我們可以進(jìn)行全局配置:
// AppDelegate 進(jìn)行全局設(shè)置
if (@available(iOS 11.0, *)){
[[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
}
這樣一來(lái)使用UITableview 、UICollectionView、UIScrollview的時(shí)候就不需要再單獨(dú)設(shè)置該屬性了。
4.iOS11 API
SafeArea、contentInsetAdjustmentBehavior、adjustedContentInset
等概念的理解請(qǐng)參考如下深度好文
https://mp.weixin.qq.com/s/W1_0VrchCO50owhJNmJnuQ
// 判斷系統(tǒng)版本,系統(tǒng)API(這個(gè)是Xcode報(bào)警提示fix發(fā)現(xiàn)的??)
if (@available(iOS 11.0, *)) {
} else {
// Fallback on earlier versions
}
5.新增框架
新加入 SDK 的大的框架有兩個(gè),分別是負(fù)責(zé)簡(jiǎn)化和集成機(jī)器學(xué)習(xí)的 Core ML 和用來(lái)創(chuàng)建增強(qiáng)現(xiàn)實(shí) (AR) 應(yīng)用的 ARKit。
6. UINavigationBar新增屬性prefersLargeTitles(BOOL)
效果如圖:
7.Xcode 9實(shí)用新特性
A. 調(diào)試可以不用USB連接了
B. 模擬器可以多開(kāi)
參考鏈接
http://www.cocoachina.com/ios/20170926/20655.html
http://www.cocoachina.com/ios/20170927/20665.html
http://www.cocoachina.com/ios/20170925/20642.html