有时候我们使用纯代码或者xib布局时会遇到导航栏遮挡布局的问题, 页面跳转后, 下级页面会被导航栏所遮挡.
如果没有理解导致这种情况的原因, 小伙伴们一般是这么做的
- 手动增加导航栏的高度(纯代码).
- 拖一根距离View顶部的线, 主动设置导航栏高度, 然后再布局. (xib)
但是这么写了之后总是感觉那么的不自在, 也不知道为啥, 总之就是看着不顺眼, 不爽.
其实原因在这里
原因
- 在iOS7 UIViewController引入了一个新的属性edgesForExtendedLayout, 如果你的容器是UINavigationController,布局默认会从顶部开始,所以会被遮挡。
解决方法:
self.edgesForExtendedLayout = UIRectEdgeNone;
还有一种解决方法
- 在iOS7之前导航栏默认为半透明的,这样的话布局是从顶部开始的,将导航栏设置为不透明后,布局会自动放到导航栏以下。
self.navigationController.navigationBar.translucent = NO;
网友评论