问题一:
1)iOS11 中 UITableView setContentOffset 方法结果不准确,
会导致 footer 添加不上,在IOS11以下的系统是可以的。
2)IOS11 中自定义区头会和自定义的cell 重用,导致页面显示混乱。
解决:
原因分析:
以上问题都是因为IOS11中引入自动估算行高的机制Self-Sizing引起的,并且IOS11默认是开启的。
因为动画是观察这两个属性的变化进行的,如果代码中有用到就会造成动画的异常,因为在估算行高机制下,contentSize的值是一点点地变化更新的,所有cell显示完后才是最终的contentSize值。因为不会缓存正确的行高,tableView reloadData的时候,会重新计算contentSize,就有可能会引起contentOffset的变化。
解决:可以通过以下代码关闭Self-Sizing 就可以解决以上问题。
if (@available(iOS 11.0, *)) {//关闭Self-Sizing
self.contentTable.estimatedRowHeight = 0;
self.contentTable.estimatedSectionFooterHeight = 0;
self.contentTable.estimatedSectionHeaderHeight = 0;
}
问题二:
iOS11 中 给 tableview添加区头和区尾 只实现 :
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section ;
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section;
无论height 设置多大 ,添加的footer 都无法显示。
解决:
必须实现以下这个代理
不实现
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return [[UIView alloc]init];
}
最后给大家推荐个不错的公众号 "说神码",或者大家可以扫描下面的二维码关注
![qrcode_for_gh_3b0177133bdb_258.jpg](https://upload-images.jianshu.io/upload_images/2370324-3aaf83dd69470513.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)