美文网首页iOS 进阶
iOS 导航栏偏移问题(只需两个属性就可以解决)

iOS 导航栏偏移问题(只需两个属性就可以解决)

作者: mansionwayh | 来源:发表于2018-08-09 10:37 被阅读341次

默认加载一个tableview,加上到导航栏,看看显示的效果。

tableview默认从0开始

在看看层级关系

添加导航栏,tableview还是默认从0开始计算

我们可以看出tableview是从(0,0)坐标开始计算,但是内容的坐标是从(0,64)开始的。

这是为什么呢?这时候我们需要用到相关属性:

适配iOS11的偏移


if (@available(iOS 11.0, *)) {
            _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        }else {
            self.automaticallyAdjustsScrollViewInsets = NO;
        }

我们看一下图层添加这两个属性后,图层变成怎样:

适配iOS11之后

tableview的frame并没有变化依然是从屏幕的(0,0)开始,但是内容的偏移发生了变化,也是从(0,0)开始。这个时候我们想让tableview正常显示就需要对tableview的frame进行改变(0,64)

添加这个两个属性,VC默认是全屏布局的。当你添加这两个的任何一个,VC的布局就会变成(0,64)布局,看看效果何如。


self.edgesForExtendedLayout = UIRectEdgeNone;

self.navigationController.navigationBar.translucent = NO;

添加偏移的属性之后偏移 层级关系

相关文章

网友评论

    本文标题:iOS 导航栏偏移问题(只需两个属性就可以解决)

    本文链接:https://www.haomeiwen.com/subject/etdqbftx.html