iOS11和iPhone X 的简单适配
1、iPhone X 发布以后发现APP的启动页没有铺满
解决方法:在LaunchImage添加一张iPhone X的启动页图片1125 × 2436或者是直接用LaunchScreen,xib或者LaunchScreen.storyboard进行配置启动图。
2、iPhone X的NavigatinBar和tabbar的高度变化
NavigationBar的高度变为88,原因是状态栏变成了40,tabbar的高度也变成了83,多增加了34, 34为底部的安全区域间距。对于我们已前写页面时SCREEN_HEIGHT-64-49在iPhone上会出现问题,导致tableview无法全部显示,解决办法是判断iPhone X的时候相应的减去88和83,最好是用宏来写,不用每个页面都去改。
#define NavigationBarHeight (SCREEN_HEIGTH == 812.0 ?88 :64)
#define TabbarHeight (SCREEN_HEIGTH == 812.0 ?83 :49)
在没有tabbar的时候,如果仅仅是SCREEN_HEIGHT-NavigationBarHeight那么底部区域会被
iPhone X这个黑条遮住,如果不喜欢遮住可以减去34。
3、iOS 11下tableview会向下偏移64或20高度
这是因为iOS11中废弃了automaticallyAdjustsScrollViewInsets,用contentInsetAdjustmentBehavior来代替。
解决办法: if (@available(iOS11.0, *)){
[UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
但是这种情况下,如果调用系统相册会发现系统界面上移,我也是看到别人的解决方案,在进入相册的时候:
if (@available(iOS 11.0, *)) {
[UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic;
}
退出相册是再次调用:
if (@available(iOS 11.0, *)) {
[UIScrollView appearance].contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}
4、iOS 11后发现之前写的tableview设置的分区头视图高度没有了
原代码:
此方法在iOS11后不起作用了,如果在iOS11中不实现-tableView: viewForHeaderInSection: 和-tableView: viewForFooterInSection: ,则-tableView: heightForHeaderInSection: 和 -tableView: heightForFooterInSection:不会被调用,tableView在iOS11默认使用了self-sizing。
解决方法: if (@available(iOS 11.0, *)) {
self.tableView.estimatedSectionHeaderHeight =15;
}
5、刷新tableview的时候出现闪动
我是在单独刷新某一行的时候发现会闪动一下
解决方法: _tableView.estimatedRowHeight = 0;
_tableView.estimatedSectionHeaderHeight = 0;
_tableView.estimatedSectionFooterHeight = 0;
6、iOS11后导航栏设置透明失效
解决方案: