iOS 11中新增了安全区域的概念,当控件超出安全区域时系统会自动调整其SafeAreaInsets值,导致可能出现与我们预期的不同效果。
如下图,左侧为iOS10模拟器,右侧为iOS11模拟器。在iOS11中状态栏位置成为了空白,原因正是如此。
我的解决方法:
通过设置tableView的contentInsetAdjustmentBehavior属性取消系统的"自适应"操作。实际上只需要内部那个判断系统版本的操作即可解决,这边算是做了双保险判断来确认当系统想对我们的tableView做改变的时候制止它。
还有其他解决方法以及相关概念说明大家可以参考---《iOS 11 安全区域适配总结》