因为项目在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