edgesForExtendedLayout ios7新特性导致autoLayout自动布局结果不正确
2015-05-14 18:11
197 查看
edgesForExtendedLayout是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向。
因为iOS7鼓励全屏布局,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。
self.edgesForExtendedLayout = UIRectEdgeNone;
来解决UINavigationBar透明的问题。设置了UIRectEdgeNone之后,你嵌在UIViewController里面的UITableView和UIScrollView就不会穿过UINavigationBar了,同时UIView的控件也回复到了iOS6时代。
不过这个对于Status Bar在iOS7上面的变化是无效的,正确的说应该是部分无效。在存在Navigation部分或者Tabbar部分的时候,上面的代码可以使得Status Bar也不载透明(有待验证,毕竟UIViewController的可用空间被控制了),但是在没有这两个部分的时候,Status Bar依旧是会记入UIView范围的。
在iOS 7中,苹果引入了一个新的属性,叫做
修复这个问题的快速方法就是在方法
这样问题就修复了。
因为iOS7鼓励全屏布局,它的默认值很自然地是UIRectEdgeAll,四周边缘均延伸,就是说,如果即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。
self.edgesForExtendedLayout = UIRectEdgeNone;
来解决UINavigationBar透明的问题。设置了UIRectEdgeNone之后,你嵌在UIViewController里面的UITableView和UIScrollView就不会穿过UINavigationBar了,同时UIView的控件也回复到了iOS6时代。
不过这个对于Status Bar在iOS7上面的变化是无效的,正确的说应该是部分无效。在存在Navigation部分或者Tabbar部分的时候,上面的代码可以使得Status Bar也不载透明(有待验证,毕竟UIViewController的可用空间被控制了),但是在没有这两个部分的时候,Status Bar依旧是会记入UIView范围的。
在iOS 7中,苹果引入了一个新的属性,叫做
[UIViewController setEdgesForExtendedLayout:],它的默认值为
UIRectEdgeAll。当你的容器是navigation controller时,默认的布局将从navigation bar的顶部开始。这就是为什么所有的UI元素都往上漂移了44pt。
修复这个问题的快速方法就是在方法
- (void)viewDidLoad中添加如下一行代码:
self.edgesForExtendedLayout = UIRectEdgeNone; |
这样问题就修复了。
相关文章推荐
- 自动布局(AutoLayout)[附带源码]【学习记录二】
- iOS 8 Auto Layout界面自动布局系列3-使用代码添加布局约束
- xcode6中自动布局autolayout和sizeclass的使用
- 使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
- iOS AutoLayout自动布局中级开发教程(3)-等宽等高等中心
- 【iOS界面开发】Objective-C自动布局(Auto Layout & SizeClass)
- 关于自动布局(Autolayout)
- iOS开发笔记--使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
- Xcode6中自动布局autolayout和sizeclass的使用
- AutoLayout和Masonry两种方式实现自动布局的内容包裹和视图均分
- iOS 代码实现自动布局(Auto Layout)第三方库
- xcode6中自动布局autolayout和sizeclass的使用
- iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束
- 自动布局autoLayout解决不同屏幕
- Xcode6中自动布局autolayout和sizeclass的使用
- IOS不用AutoLayout也能实现自动布局的类(3)----MyRelativeLayout 相对布局
- iOS 8 Auto Layout界面自动布局系列4-使用VFL添加布局约束
- iOS AutoLayout自动布局中级开发教程(4)-label等文字自动适应大小,宽度
- Xcode6中自动布局autolayout和sizeclass的使用
- IOS 自动布局指南1 介绍(auto layout guide)