iOS11和iPhone X适配

一、在项目中添加支持iOS11的启动图
添加LaunchImage图片或者在LaunchScreen.storyboard适配

二、TableView的适配
当没有实现TableView的HeaderView和FooterView代理方法,则不会调用对应的高度方法,会出现默认的HeaderView和FooterView。
解决方法1:实现HeaderView和FooterView代理方法
解决方法2:设置HeaderView和FooterView估算高度

三、不是iPhone X的机型适配
1、iOS11开始ViewController的automaticallyAdjustsScrollViewInsets属性被废,可以根据判断系统,分别设置ScrollView内部视图不自动适配,使用绝对布局。

if (@available(iOS 11.0, *)) { 
     _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
     self.automaticallyAdjustsScrollViewInsets = NO;
}

四、iPhone X的机型适配
1、如果页面中没有导航栏,对于iPhone X而言,最好重新设计(吐血)。不然会被刘海挡住。
2、iPhone X的状态栏高度是44,整个导航栏高度是88,如果之前写死20的,要动态获取状态栏的高度,来适配。

[UIApplication shareApplication].statusFrame.size.height // 根据这个值这个判断

3、tabBar适配
iPhone X中的tabbar高度从49变为83,如果tabBar异常,需要重新布局。

五、安全区
iOS11开始出现控制器安全区的概念,替换原来的控制器属性topLayoutGuide和bottomLayoutGuide,防止内容区域被遮挡。
一般机型的控制器安全区域为UIEdgeInsetsMake(20, 0, 49, 0)或者UIEdgeInsetsMake(64, 0, 49, 0),iPhoneX的安全区域一般为UIEdgeInsetsMake(88, 0, 83, 0)。当然,这个得依据设计图和需求来确定。

你可能感兴趣的:(iOS11和iPhone X适配)