NavigationBar的隱藏與顯示

weixin_34116110發表於2017-06-03

最近在使用UINavigationView時,rootViewController設定多個子UIView進行切換,發現只有最先顯示的UIView能正常顯示,通過切換顯示的UIView的佈局向上偏移了64px,導致部分內容被NavigationBar給遮擋了。

通過查詢相關資料才發現iOS6中預設的佈局將從navigation bar的底部開始,但到了iOS7中預設佈局從navigation bar的頂部開始,這就是為什麼所有的UI元素都往上漂移了。

通常有兩種解決方案:
1.設定NavigationBar的透明度為NO.

navigationBarApperance.translucent=NO;

2.設定NavigationBar的backgroundImage.

[navigationBarApperance setBackgroundImage:[UIImage imageWithColor:kColorNavBG] forBarMetrics:UIBarMetricsDefault];

還有一種方案是在rootViewController的ViewDidLoad方法中設定:

self.edgesForExtendedLayout=UIRectEdgeNone;

edgesForExtendedLayout是一個型別為UIExtendedEdge的屬性,指定邊緣要延伸的方向,它的預設值是UIRectEdgeAll,即檢視向容器四周延伸。

相關文章