iOS view顶部被导航条遮挡呈半透明

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


未设置头部.jpg

解决办法:
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;
}
设置好头部.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容