edgesForExtendedLayout是一個(gè)UIExtendedEdge類(lèi)型的屬性惜姐,指定邊緣要延伸的方向把曼。
從iOS 7開(kāi)始,蘋(píng)果鼓勵(lì)全屏布局摄乒,蘋(píng)果引入了一個(gè)新的屬性悠反,叫做[UIViewController setEdgesForExtendedLayout:],它的默認(rèn)值為UIRectEdgeAll馍佑,四周邊緣均延伸斋否。當(dāng)你的容器是navigation controller時(shí),默認(rèn)的布局將從navigation bar的頂部開(kāi)始拭荤。這就是為什么所有的UI元素都往上漂移了44pt茵臭。
如果視圖中上有navigationBar,下有tabBar舅世,那么視圖仍會(huì)延伸覆蓋到四周的區(qū)域旦委。
self.edgesForExtendedLayout = UIRectEdgeNone;
我們都知道默認(rèn)的UINavigationBar是半透明的。如上設(shè)置了UIRectEdgeNone之后雏亚,你嵌在UIViewController里面的UITableView和UIScrollView就不會(huì)穿過(guò)UINavigationBar了缨硝,同時(shí)UIView的控件也回復(fù)到了iOS6時(shí)代。
不過(guò)這個(gè)對(duì)于Status Bar在iOS7上面的變化是無(wú)效的罢低,正確的說(shuō)應(yīng)該是部分無(wú)效查辩。在存在Navigation部分或者Tabbar部分的時(shí)候,上面的代碼可以使得Status Bar也不載透明(有待驗(yàn)證网持,畢竟UIViewController的可用空間被控制了)宜岛,但是在沒(méi)有這兩個(gè)部分的時(shí)候,Status Bar依舊是會(huì)記入U(xiǎn)IView范圍的功舀。
參考資料:
http://blog.sina.com.cn/s/blog_6291e42d0101f6b0.html
http://blog.csdn.net/cny901111/article/details/26529949