美文网首页
edgesForExtendedLayout, extended

edgesForExtendedLayout, extended

作者: 红鲤鱼绿鲤鱼与鱼 | 来源:发表于2016-11-11 20:36 被阅读287次

Navigation Controller是一个container view controller。可以在viewController中通过以下方法设置navigation 栈中viewController view的布局:

edgesForExtendedLayout属性

默认为UIRectEdgeAll,即使视图中上有navigationBar,下有tabBar,那么视图仍会延伸覆盖到四周的区域。通过设置edgesForExtendedLayout属性指定view边缘要延伸的方向,可以控制视图是否会延伸到Navigation Bar和Tool Bar下。

如果不想让view延伸到bar下,可以将edgesForExtendedLayout属性设置为UIRectEdgeNone,这时会发现bar的颜色变灰。如图设置self.edgesForExtendedLayout = UIRectEdgeTop效果


如下代码:
self.navigationController.navigationBar.translucent = NO; self.navigationController.toolbar.translucent = NO;
设置Navigation Bar和Tool Bar不透明,也可以实现view不延伸到Navigation Bar和Tool Bar下的效果,且bar的颜色不会变灰,此时edgesForExtendedLayout属性设置失效。如图设置self.navigationController.toolbar.translucent = NO效果

extendedLayoutIncludesOpaqueBars属性

属性默认为NO,即视图不会延伸到不透明的bar下。如果为YES,则即使Navigation Bar或Tool Bar的translucent属性为NO不透明,依然可以通过设置edgesForExtendedLayout属性,实现视图可以延伸到Navigation Bar或Tool Bar下。

automaticallyAdjustsScrollViewInsets

属性默认为YES。此时如果屏幕中有status bar、search bar、navigation bar、toolbar或 tab bar,程序会自动调整scrollView在这些视图之间显示,而不会被它们覆盖。
self.edgesForExtendedLayout = UIRectEdgeAll;//默认UIRectEdgeAll self.automaticallyAdjustsScrollViewInsets = YES;//默认为YES
效果如下:

3.1
self.edgesForExtendedLayout = UIRectEdgeNone; self.automaticallyAdjustsScrollViewInsets = YES;//默认为YES
效果如下:
3.2

两种情况下automaticallyAdjustsScrollViewInsets属性都为YES,都可以实现自动调整scrollView尺寸,使tableview可以在bar之间正常显示,不会出现顶部或底部cell被bar遮挡的情况。仔细观察可以发现self.edgesForExtendedLayout属性为UIRectEdgeAll时,tableView上下滚动时可以穿过bar,从图3.1可以看到toolbar呈现出淡淡的绿色(tableview中cell的颜色)。

相关文章

网友评论

      本文标题:edgesForExtendedLayout, extended

      本文链接:https://www.haomeiwen.com/subject/mdlxpttx.html