ios7中的edgesForExtendedLayout

edgesForExtendedLayout是一个类型为UIExtendedEdge的属性,指定边缘要延伸的方向。

因为iOS7鼓励全屏布局,所以它的默认值是UIRectEdgeAll——四周边缘都延伸,就是说,即使视图中上有navigationBar,下有tabBar,那么视图仍然会延伸覆盖到四周的区域。

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;

如上代码所示,设置了UIRectEdgeNone之后,镶嵌在UIViewController里面的UITableView和UIScrollView就不会穿过UINavigationBar,同时UIView也恢复到了iOS6时代。

不过,这个对于Status Bar在iOS7上的变化是无效的,正确的说应该是部分无效。在存在Navigation部分或者Tabbar部分的时候,上面的代码可以使得Status Bar也不再透明,但是在没有这两个部分的时候,Status Bar依旧是会计入UIView范围的。

原文地址:https://www.cnblogs.com/benbenzhu/p/3948778.html