iOS 11适配

适配网上文章很多,我只是做个总结,方便查看。

iOS 11适配:

适配 iOS11 automaticallyAdjustsScrollViewInsets 弃用 和 tableView的HeaderView、FooterView上下边距过大

在didFinishLaunchingWithOptions中加入代码

if (@available(ios 11.0,*)) {
        
        UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        
        UITableView.appearance.estimatedRowHeight = 0;
        
        UITableView.appearance.estimatedSectionFooterHeight = 0;
        
        UITableView.appearance.estimatedSectionHeaderHeight = 0;
        
    }

还看到一种适配方案,我觉得更实际些,就是在有tableView的控制器中加入如下代码:

    self.extendedLayoutIncludesOpaqueBars = YES;
    if (@available(iOS 11.0, *)) {
        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        
    } else {
        self.automaticallyAdjustsScrollViewInsets = NO;
        
    }
    self.tableView.contentInset = UIEdgeInsetsMake(64, 0, 49, 0);
    self.tableView.scrollIndicatorInsets = self.tableView.contentInset;

iPhone X

关于iPhone X 你之前的应用首次运行会出现上下黑边的情况
只需要准备一张iPhone X的启动页即可,尺寸为: 1125 × 2436,添加到项目Assets的LaunchImage中

注:LaunchImage中,直接添加可能没有iPhone X的尺寸框,网上是改动Contents.json,我是直接删了LaunchImage,又添加了一遍LaunchImage,就出来了iPhone X的尺寸框(xcode9自带)

后面我会持续更新...

相关参考

  • 关于iOS 11 和 iPhone X 改动介绍:
    https://www.lee1994.com/guan-yu-iphone/

  • 关于ScrollView新属性 contentInsetAdjustmentBehavior 代替 automaticallyAdjustsScrollViewInsets
    http://www.jianshu.com/p/1601bd885f83

你可能感兴趣的:(iOS 11适配)