iOS 导航栏64的问题总结

首先我们默认加载一个tableView,看一下他的显示效果。

image.png

 

 

再看层级:

我们可以看到tableview是从(0,0)坐标开始的但是内容是从(0,64)开始的。这是为什么呢?控制这个现象的属性又是什么呢?

这时我们需要用到相关属性:
当升级到iOS 11的时候,发现UIScrollView 有莫名其妙的偏移了 可是明明设置了automaticallyAdjustsScrollViewInsets
这是因为iOS 11为UIScrollView 添加了新的属性contentInsetAdjustmentBehavior 这是一个枚举
找到UIScrollViewContentInsetAdjustmentNever 从来不自动调整和automaticallyAdjustsScrollViewInsets = NO 是一个功效 这样就解决了iOS 11这个bug

 

if (@available(iOS 11.0, *)) {
  Scrollview.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

} else {
            // Fallback on earlier versions
  self.automaticallyAdjustsScrollViewInsets = NO;
}

 

 

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

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

 

  self.edgesForExtendedLayout = UIRectEdgeNone;
  self.navigationController.navigationBar.translucent = NO;

 

 

这两个属性的性质是一样的,vc默认是全屏布局的,当你添加这个两个中任何一个后,vc的布局就变成从(0,64)布局,我们可以看一下图层:


以上只是我在遇到64偏移的时候,解决问题常用到的记得属性,在这里做了一下整理,另外以上(0,64)中的64值得是导航栏的高度,注意iPhone X的适配

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值