上线前遇到iOS11各种适配问题,意识到之前代码写得不严谨,甚至基类里面也常常用系统的默认处理;另外,对一些属性半知半解,导致适配时,花了不少时间。不再絮言,下面是我遇到的iOS11部分适配问题。
1.有关tableview
a.不适配现象:section头尾视图有很大间隙、不同section区的row上面的字体重叠
解决方法:tableview的代理方法中设置sectionHeader、sectionFooter的高度,viewForFooterInSection、viewForHeaderInSection 返回一个简单的view即可。
原因:iOS11 tableview一些默认的代理方法 跟之前的差异,要求大家写代码更严谨了。
b.不适配现象:tableview会上移或者下移
解决方法:_tableView.estimatedRowHeight=0.0f;
_tableView.estimatedSectionFooterHeight=0.0f;
_tableView.estimatedSectionHeaderHeight=0.0f;
self.extendedLayoutIncludesOpaqueBars = YES;
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
_tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
_tableView.scrollIndicatorInsets = _tableView.contentInset;
}
原因:iOS11 self-sizing默认是开启的。estimated高度由iOS11 之前的0 变为UITableViewAutomaticDimension
2.window上层级问题
不适配现象:弹框不显示
解决方法:视图直接加window上面 [AppDelegate sharedAppDelegate].window