iOS7以后,VC默认使用全屏布局,即view的origin.x是从屏幕的左上角开始计算的。在有navigationcontroller合uitabbarcontroller
时,view也是默认占满整个屏幕的。
edgesForExtendedLayout
edgesForExtendedLayout
的作用是,告知view是在整个屏幕哪个方向延展。默认值是:UIRectEdgeAll
,向上下左右四个方向延展,也就是我们看到的效果。view占满这个屏幕。
当我们把edgesForExtendedLayouts
设置为UIRectEdgeNone
时,view的布局就是从navigationbar
下面开始布局,并且底部不会延展到UITabbar
下面。
automaticallyAdjustsScrollViewInsets
在解释edgesForExtendedLayout
属性时也需要解释下automaticallyAdjustsScrollViewInsets
属性,默认为YES,该值表示是否自动调整滚动时图的contentInset
属性,以适应状态栏,搜索栏,导航栏工具栏或者选项卡栏占居的屏幕区域。automaticallyAdjustsScrollViewInsets
为yes时,scrollview
的ContentInset.top
值会自动调整为64,这样scrollview里的内容就是在navigationbar
下面布局了。
translucent
再解释个属性:translucent
导航栏是否为半透明的。默认是yes.
当设置navitaioncontoller.navigationbar.translucent = NO
时,需要处理 extenedLayoutIncludesOpaquesBars
属性。默认值是NO,
self.view
的布局是否包含设置为不透明之后的导航栏,以及tabBar
,这是为yes
时,依然会延伸到这些bar下面,占满整个屏幕,设置为NO时就会避免这些bar
,不再延伸到它们下面。
结构 | edgesForExtendedLayout |
---|---|
UIRectEdgeAll. | 延展 |
UIRectEdgeNone | 不延展 |
表格 | automaticallyAdjustsScrollviewInsets | navigationBar.translucent |
---|---|---|
UIRectEdgeAll | 默认yes,contentInset自适应bar内容。 no表示不自适应,就需要自己调整了 | 默认yes,表示半透明。会各种延展。为NO时,需要考虑extendedLayoutIncludesOpaquesBars,默认NO ,属性表示是否包含不透明的bar,NO 表示不包含,就不延展,yes表示包含,即时不透明也会延展到这些bar下面 |
网友评论