有问题留言~
iOS11
1.导航栏图层变化
titleView和barbutton都需要根据版本适配
titleView最好独立一个view出来,并且重写intrinsicContentSize属性
2.新增安全区域的概念
iOS 11中Controller的automaticallyAdjustsScrollViewInsets属性被废弃了,新增加了安全区域,如果你的APP中使用的是自定义的navigationbar,隐藏掉系统的navigationbar,并且tableView的frame为(0,0,SCREEN_WIDTH, SCREEN_HEIGHT)开始,那么系统会自动调整SafeAreaInsets值为(20,0,0,0),如果使用了系统的navigationbar,那么SafeAreaInsets值为(64,0,0,0),如果也使用了系统的tabbar,那么SafeAreaInsets值为(64,0,49,0)。iPhoneX的SafeAreaInsets值为(88,0,34,0)。
PS:安全区域是只读的,可以通过addtionalSafeAreaInset来扩展安全区域。
3.scrollView新增的两个属性:adjustContentInset和contentInsetAdjustmentBehavior
自行百度
4.手动关闭估算行高
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
iPhone X
必须修改启动图才能占满整个屏幕。
导航栏和tabbar的高度增加,后面的开发需要注意动态改变他的高度。
下面的宏直接放在pch文件里面
#define ScreenWidth [[UIScreen mainScreen] bounds].size.width #define ScreenHeight [[UIScreen mainScreen] bounds].size.height #define Is_Iphone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) #define Is_Iphone_X (Is_Iphone && ScreenHeight == 812.0) #define NaviHeight Is_Iphone_X ? 88 : 64 #define TabbarHeight Is_Iphone_X ? 83 : 49 #define BottomHeight Is_Iphone_X ? 34 : 0
例子:
[view mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view.mas_top).with.offset(NaviHeight); make.bottom.equalTo(self.view.mas_bottom).with.offset(-(BottomHeight)); make.left.right.equalTo(self.view); }]; //有tabbar就用TabbarHeight,没有就用BottomHeight
开发建议
self.automaticallyAdjustsScrollViewInsets = NO。
因为要适配iPhone X动态改变导航和tabbar的高度,所以最外层不建议用xib,直接通过代码适配最好。
作者:jennyChannnn
链接:http://www.jianshu.com/p/2370c0653537
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。