iOS edgesForExtendedLayout

edgesForExtendedLayout是一個UIExtendedEdge類型的屬性,指定邊緣要延伸的方向。

從iOS 7開始,蘋果鼓勵全屏布局,蘋果引入了一個新的屬性,叫做[UIViewController setEdgesForExtendedLayout:],它的默認(rèn)值為UIRectEdgeAll,四周邊緣均延伸。當(dāng)你的容器是navigation controller時,默認(rèn)的布局將從navigation bar的頂部開始。這就是為什么所有的UI元素都往上漂移了44pt。

如果視圖中上有navigationBar,下有tabBar,那么視圖仍會延伸覆蓋到四周的區(qū)域。

self.edgesForExtendedLayout = UIRectEdgeNone;

我們都知道默認(rèn)的UINavigationBar是半透明的。如上設(shè)置了UIRectEdgeNone之后,你嵌在UIViewController里面的UITableView和UIScrollView就不會穿過UINavigationBar了,同時UIView的控件也回復(fù)到了iOS6時代。

不過這個對于Status Bar在iOS7上面的變化是無效的,正確的說應(yīng)該是部分無效。在存在Navigation部分或者Tabbar部分的時候,上面的代碼可以使得Status Bar也不載透明(有待驗證,畢竟UIViewController的可用空間被控制了),但是在沒有這兩個部分的時候,Status Bar依舊是會記入UIView范圍的。

參考資料:
http://blog.sina.com.cn/s/blog_6291e42d0101f6b0.html
http://blog.csdn.net/cny901111/article/details/26529949

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容