最近在开发中碰到一个问题,有些机型,会被view的导航条覆盖。
追根溯源,iOS7开始后,在UIViewController引入了一个新的属性:edgesForExtendedLayout。 这个属性的默认值是UIRectEdgeAll,当容器是UINavigationController的时候,默认的布局就是从状态栏的顶部开始的。这也是为什么设置的控件都往上漂移的原因。
但是此时的苹果已经更新到了iOS10+摒弃了iOS7,最低版本都需要iOS8,所以,这个问题本不应该出现的,可是还是出现了,只能为了部分的机型去做调整,目前只是解决办法,但是为何出现这样的情况,未深入找其原因,下面只说解决办法。问题样式:
解决办法:
1.在viewWillAppear里设置不需要拓展到整个屏幕
- (void)viewWillAppear:(BOOL)animated{
//view不需要拓展到整个屏幕
self.edgesForExtendedLayout = UIRectEdgeNone;
self.navigationController.navigationBar.translucent = NO;
}
2.在viewWillDisappear里还原
- (void)viewWillDisappear:(BOOL)animated
{
//还原设置
self.edgesForExtendedLayout = UIRectEdgeAll;
self.navigationController.navigationBar.translucent = YES;
}