有時候我們使用純代碼或者xib布局時會遇到導(dǎo)航欄遮擋布局的問題, 頁面跳轉(zhuǎn)后, 下級頁面會被導(dǎo)航欄所遮擋.
如果沒有理解導(dǎo)致這種情況的原因, 小伙伴們一般是這么做的
- 手動增加導(dǎo)航欄的高度(純代碼).
- 拖一根距離View頂部的線, 主動設(shè)置導(dǎo)航欄高度, 然后再布局. (xib)
但是這么寫了之后總是感覺那么的不自在, 也不知道為啥, 總之就是看著不順眼, 不爽.
其實原因在這里
原因
- 在iOS7 UIViewController引入了一個新的屬性edgesForExtendedLayout, 如果你的容器是UINavigationController,布局默認(rèn)會從頂部開始,所以會被遮擋。
解決方法:
self.edgesForExtendedLayout = UIRectEdgeNone;
還有一種解決方法
- 在iOS7之前導(dǎo)航欄默認(rèn)為半透明的嫉晶,這樣的話布局是從頂部開始的,將導(dǎo)航欄設(shè)置為不透明后,布局會自動放到導(dǎo)航欄以下祭陷。
self.navigationController.navigationBar.translucent = NO;