美文网首页
iOS11&iPhoneX适配:

iOS11&iPhoneX适配:

作者: IThai | 来源:发表于2017-12-01 14:32 被阅读0次

借鉴于作者:http://www.jianshu.com/p/3a9ad4f0fa32?appinstall=0

>使用:

在你的pch中,宏定义宽高,和高度系数、宽度系数(这里会有人觉得,宽度系数?是的,经历了iphoneX以后,我们都该有所觉悟,如果哪天苹果的屏幕宽度发生了变化,我们也要去一点点地修改项目中的  宽度  吗?)、到顶部和底部的安全距离。

- 1. 

    #define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width

    #define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height

配合美工标注图使用:

    高度系数:(821x    667 8和6)

    #define HeightCoefficient (SCREEN_HEIGHT == 812.0 ? 667.0/667.0 :   SCREEN_HEIGHT/667.0)

    宽度系数:(821x 667 8和6)

    #define WidthCoefficient (SCREEN_WIDTH == 375.0 ? 375.0/375.0 : SCREEN_WIDTH/375.0)

- 2.安全距离

    顶部高度

    #define SafeAreaTopHeight (SCREEN_HEIGHT == 812.0 ? 88 : 64)

    底部高度(底部高度适配:列表类不减安全距离,底部有按钮的减)

    #define SafeAreaBottomHeight (SCREEN_HEIGHT == 812.0 ? 34 : 0)

    例:

有两种情况,到目前倒是没具体标准,但是根据苹果自己的样式,有列表的页面,下边的安全距离不会减去,底部有按钮的页面底部安全距离减去。(注意底部安全距离部分是有手势的。如果公司没有测试机,可以去附近体验店,先玩玩,了解下吧。😁)

 不减底部安全距离:

     _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, SafeAreaTopHeight, SCREEN_WIDTH, SCREEN_HEIGHT - SafeAreaTopHeight) style:UITableViewStylePlain];

减去底部安全距离:

    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, SafeAreaTopHeight, SCREEN_WIDTH, SCREEN_HEIGHT - SafeAreaTopHeight - SafeAreaBottomHeight) style:UITableViewStylePlain];

- 3. ios11下 controller.automaticallyAdjustsScrollViewInsets = NO无效问题:

    //如果导航隐藏 ios11 下方法controller.automaticallyAdjustsScrollViewInsets = NO; 无效的处理:

在pch中,宏定义下面方法;

    /// 第一个参数是当下的控制器适配iOS11 一下的,第二个参数表示scrollview或子类

    #define AdjustsScrollViewInsetNever(controller,view) if(@available(iOS 11.0, *)) {view.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;} else if([controller isKindOfClass:[UIViewController class]]) {controller.automaticallyAdjustsScrollViewInsets = NO;}

例:

    在需要使用的控制器中,AdjustsScrollViewInsetNever(self, _tableView);

- 4.cell的高度自计算问题:

    //cell删除方法据说有添加新的方法没试过

    //cell分组 组头/组尾部高度问题(我的项目实测,没发现高度有问题),如果你的有问题,可以进行如下尝试:

    /// 自动关闭估算高度

    self.tableView.estimatedRowHeight = 0;

    self.tableView.estimatedSectionHeaderHeight = 0;

    self.tableView.estimatedSectionFooterHeight = 0;

相关文章

网友评论

      本文标题:iOS11&iPhoneX适配:

      本文链接:https://www.haomeiwen.com/subject/ibqwbxtx.html