iOS11系统下,界面布局错位BUG解决

因为项目在iOS11系统下运行时发现tableview和collectionView出现内容自动向下偏移了20的高度,在查找问题的时候,发现了相关的新特性,从而解决了适配问题。

iOS11系统下添加了一些新特性,具体内容可仔细阅读这篇文章,本文涉及内容是UIScrollView and UITableView的新特性

这里只介绍怎么解决问题
新增的contentInsetAdjustmentBehavior属性用来配置adjustedContentInset的行为,该结构体有以下几种类型:

typedef NS_ENUM(NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {  
    // 会自动计算和适应顶部和底部的内边距并且在scrollView 不可滚动时,也会设置内边距.
    UIScrollViewContentInsetAdjustmentAutomatic, 
    // 自动计算内边距
     UIScrollViewContentInsetAdjustmentScrollableAxes,
    // 不计算内边距
    UIScrollViewContentInsetAdjustmentNever,
    // 根据safeAreaInsets 计算内边距
    UIScrollViewContentInsetAdjustmentAlways,
}

显然,我们要使用UIScrollViewContentInsetAdjustmentNever
先要判断版本,避免不能识别代码,设置相关的UIScrollView的子类的contentInsetAdjustmentBehavior属性

最终答案就是下面这句代码

#ifdef __IPHONE_11_0
        self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        self.collection.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
#endif

你可能感兴趣的:(iOS11系统下,界面布局错位BUG解决)