【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢迎各路豪杰点评改进!
1.应用场景:
在iOS11系统更新后,做程序兼容时,频繁性的会出现UITableView刷新时,屏幕的闪屏Bug
2.实现目标:
分析解决此Bug
3.代码说明:
1.视图漂移或者闪动原因:
苹果自iOS11后系统默认开启Self-Sizing,首先要知道Self-Sizing
起到的作用。官方文档解释如此:大概就是说我们不用再自己去计算cell的高度了,
只要设置好这两个属性,约束好布局,系统会自动计算好cell的高度。
IOS11以后,Self-Sizing默认开启,包括Headers, footers。
如果项目中没使用estimatedRowHeight属性,
在IOS11下会出现一些特殊的现象,因为IOS11之前,
estimatedRowHeight默认为0,Self-Sizing自动打开后,
contentSize和contentOffset都可能发生改变。
不知苹果是否会在后续的API更新中再做调整,为了保险 与兼容性更好,可在判断中做响应的调整: 如下⤵️
/** 在对应的tableView初始化时加入下面的判断及属性初值 */
if (@available(iOS 11.0, *)){
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0;
self.tableView.estimatedSectionFooterHeight = 0;
}
网友评论