1.當(dāng)我們將開發(fā)工具升級到 Xcode9.0以上的時候首先需要做的是如下工作:
①.放入一張1024pt 的 AppIcon
②.添加一張 iPhone x 的啟動圖,規(guī)格如下:
2.Tableviw 適配問題
automaticallyAdjustsScrollViewInsets經(jīng)常被設(shè)置成NO玄坦,由開發(fā)者去控制處理留白和坐標(biāo)問題, 但是iOS11后automaticallyAdjustsScrollViewInsets = NO這句代碼失效。iOS 11后潮尝,把這個automaticallyAdjustsScrollViewInsets廢棄饥追,新增了contentInsetAdjustmentBehavior簿姨,這個屬性是個枚舉類型值曙博,我們只需要把其設(shè)置成never就行了,解決tableView偏移的問題, 我們可以對對 tableView 進(jìn)行如下設(shè)置:
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
3.禁止屏幕滑動返回
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// 禁用返回手勢
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
{
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)])
{
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
4.MJRefresh上拉刷新死循環(huán)
self.tableView.estimatedRowHeight=130;
130這個數(shù)值是cell的平均高度世落,如果estimatedRowHeight設(shè)置非常小郎笆,MJRefresh的KVO會監(jiān)聽錯誤的contentoffset,就會造成循環(huán)上拉加載操作.
5.導(dǎo)航欄適配
導(dǎo)航欄新增了一種大標(biāo)題樣式监婶,默認(rèn)設(shè)置是不開啟旅赢,所以不需要修改齿桃。
iOS 11以前,導(dǎo)航欄的高度是64煮盼,其中狀態(tài)欄statusBar的高度是20短纵,底部tabbar的高度是49.iOS 11之后,iPhoneX的導(dǎo)航欄的高度是88僵控,其中狀態(tài)欄的statusBar的高度變成了44香到, 底部的tabbar變成了83.iPhoneX的底部增加了虛擬Home區(qū),由于安全區(qū)域的原因默認(rèn)tabBar的高度由49變?yōu)?3喉祭,增高了34,所以自定義的底部TabBar也需要需改其適配方案.目前我們的項目中還沒有使用自定義的底部TabBar, 就沒有考慮, 先來考慮關(guān)于navi 在 iPhone X 上是88的問題.目前還沒有發(fā)現(xiàn)iPhoneX的機(jī)型判斷API雷绢,所以先使用size來做代替判斷.
#definekStatusBarHeight[[UIApplication sharedApplication] statusBarFrame].size.height
#define kNavBarHeight 44.0
#define kTabBarHeight ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)//tabBar高
#define kTopHeight(kStatusBarHeight + kNavBarHeight)//導(dǎo)航欄高
//判斷iPhoneX
#define isiPhone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#defineiPhoneX[[UIScreenmainScreen] bounds].size.width >= 375.0f && [[UIScreen mainScreen] bounds].size.height >= 812.0f && isiPhone