2018-01-25

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后导航栏设置透明失效

解决方案:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容