iOS 导航栏偏移问题(只需两个属性就可以解决)
2019-04-09 本文已影响29人
叩首问路梦码为生
默认加载一个tableview,加上到导航栏,看看显示的效果。
image在看看层级关系
image我们可以看出tableview是从(0,0)坐标开始计算,但是内容的坐标是从(0,64)开始的。
这是为什么呢?这时候我们需要用到相关属性:
适配iOS11的偏移
if (@available(iOS 11.0, *)) {
_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
我们看一下图层添加这两个属性后,图层变成怎样:
imagetableview的frame并没有变化依然是从屏幕的(0,0)开始,但是内容的偏移发生了变化,也是从(0,0)开始。这个时候我们想让tableview正常显示就需要对tableview的frame进行改变(0,64)
添加这个两个属性,VC默认是全屏布局的。当你添加这两个的任何一个,VC的布局就会变成(0,64)布局,看看效果何如。
self.edgesForExtendedLayout = UIRectEdgeNone;
self.navigationController.navigationBar.translucent = NO;
image
image