iOS 导航栏遮挡UIViewController的问题

有时候我们使用纯代码或者xib布局时会遇到导航栏遮挡布局的问题, 页面跳转后, 下级页面会被导航栏所遮挡.

如果没有理解导致这种情况的原因, 小伙伴们一般是这么做的

  1. 手动增加导航栏的高度(纯代码).
  2. 拖一根距离View顶部的线, 主动设置导航栏高度, 然后再布局. (xib)

但是这么写了之后总是感觉那么的不自在, 也不知道为啥, 总之就是看着不顺眼, 不爽.

其实原因在这里

原因

  • 在iOS7 UIViewController引入了一个新的属性edgesForExtendedLayout, 如果你的容器是UINavigationController,布局默认会从顶部开始,所以会被遮挡。

解决方法:

self.edgesForExtendedLayout = UIRectEdgeNone;

还有一种解决方法

  • 在iOS7之前导航栏默认为半透明的,这样的话布局是从顶部开始的,将导航栏设置为不透明后,布局会自动放到导航栏以下。
self.navigationController.navigationBar.translucent = NO;

你可能感兴趣的:(iOS 导航栏遮挡UIViewController的问题)