iOS11适配tableView顶部空白


MJRefresh和继承自UIScrollView的视图的iOS 11适配

背景:前两天一个同行问我了一个问题:

问题
问题

还有就是说如果你使用了 MJRefresh进行刷新,并且你隐藏了导航栏,就会出现下拉刷新错乱的问题。
这跟我这哥们问的问题是一种类型的,因为 iOS 11上废除了 automaticallyAdjustsScrollViewInsets这个方法,使用 UIScrollView's contentInsetAdjustmentBehavior来代替,解决办法就是一段代码:

OC:

 if (@available(iOS 11.0, *)) {
        self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    }else {
        self.automaticallyAdjustsScrollViewInsets = NO;
    }

swift:

if #available(iOS 11.0, *) {  
    tableView.contentInsetAdjustmentBehavior = .never  
} else {  
    self.automaticallyAdjustsScrollViewInsets = false  
}  

因为哥们是OC写的项目,大家用的时候注意写成Swift。

.iOS 11 下tableView的头视图和脚视图

在iOS11里面有时候在tableView的头部和尾部留白,因为苹果给滚动试图加进去了self-sizeing,开始计算逐步计算contentSize,默认如果不去实现viewForHeaderInSection就不会调用heightForHeaderInSection,尾部试图一样。

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {  
    return nil  
}  
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {  
    return nil  
}  

如果你不想实现viewForHeaderInSection也不想留白,那么只需要你把self-sizeing自动估高关闭即可

/// 自动关闭估算高度,不想估算那个,就设置那个即可
self.tableView.estimatedRowHeight = 0
self.tableView.estimatedSectionHeaderHeight = 0
self.tableView.estimatedSectionFooterHeight = 0

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM