iOS edgesForExtendedLayouts用到的适配

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时,scrollviewContentInset.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下面

你可能感兴趣的:(iOS edgesForExtendedLayouts用到的适配)