UIViewController的View顯示在導航欄下面如何解決?


ios7之前的版本中UIViewController中的view在顯示后會自動調整為去掉導航欄的高度的,控件會自動在導航欄以下擺放。

在iOS7中UIViewController的wantsFullScreenLayout屬性被舍棄了,所有的UIViewController創建后默認就是full Screen的,因此如果帶導航欄的應用界面中的部分控件會被導航欄覆蓋掉。

解決方案:可以使用ios7中UIViewController新增的屬性extendLayoutIncludesOpaqueBars和edgesForExtendedLayout來解決。

其中這個屬性指定了當bar使用不透明圖片時,試圖是否延伸至bar所在區域,默認值為NO。而edgesForExtendedLayout

其中這個屬性指定了當Bar使用了不透明圖片時,視圖是否延伸至Bar所在區域,默認值時NO。而edgesForExtendedLayout則是表示視圖是否覆蓋到四周的區域,默認是UIRectEdgeAll,即上下左右四個方向都會覆蓋,那么為讓頂部不進行延伸到導航欄覆蓋的區域,我們可以把頂部區域延伸去掉。

 

上面是抄來的(看不懂沒關系), 下面才是重點:

UIViewController的View和導航欄的顯示是這樣的, 默認的, 如果導航欄設置為有透明度的(默認就是半透明的), UIViewController的View就會被導航欄覆蓋

如果不想被覆蓋, 可以使用以下代碼解決(控制器中調用):

self.edgesForExtendedLayout = UIRectEdgeNone;

反之, 如果導航欄是不透明的, 默認UIViewController的View就會往下移, 在導航欄下顯示, 如果不想往下移, 可以實現如下代碼(控制器中調用):

self.extendedLayoutIncludesOpaqueBars = YES;

 

ps: 僅對UIViewController而言, UITableViewController這里不是測試對象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM