iOS9 Storyboard引用了一个新的安全区域UILayoutGuide的概念,假设我们需要使用storyboard,并且同时向下适配iOS8,隐藏navigationbar的vc该怎么处理没有间距呢?
1.storyboard向下适配iOS8,
首先要去掉勾选的Use Safe Area Layout Guides,如图所示
2.代码隐藏navigationbar
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationController.navigationBar.hidden = YES;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.navigationController.navigationBar.hidden = NO;
}
3.全屏展示,让视图没有顶部间距
先放一张间距示例
解决的办法是将Top Space to 这条约束改成Superview,同时将上边距改成0,双击右边约束,可查看约束详情
按照图中步骤操作就可以实现了哦~
总结一下:
1.iOS7: topLayoutGuide/bottomLayoutGuide,利用一个虚拟的view初步解决导航栏,tabbar的隔离问题。
2.iOS9:有了虚拟view的思路,又考虑能不能去除top/bottom概念的局限性,让开发者都可以灵活自定义这个隔离区域,又提供一些更方便简洁易懂的API方便进行代码自动布局,于是有了UILayoutGuide这个类。
3.两年后的iOS11,有了iPhone X,苹果工程师顺理成章的将他们在iOS9的探索成果利用起来,他们自定义了一个UILayoutGuide,给开发者提供了一个只读属性的safeAreaLayoutGuide,并且提出安全区域的概念。