最近在使用UINavigationView時,rootViewController設(shè)置多個子UIView進(jìn)行切換,發(fā)現(xiàn)只有最先顯示的UIView能正常顯示,通過切換顯示的UIView的布局向上偏移了64px,導(dǎo)致部分內(nèi)容被NavigationBar給遮擋了。
通過查詢相關(guān)資料才發(fā)現(xiàn)iOS6中默認(rèn)的布局將從navigation bar的底部開始,但到了iOS7中默認(rèn)布局從navigation bar的頂部開始,這就是為什么所有的UI元素都往上漂移了。
通常有兩種解決方案:
1.設(shè)置NavigationBar的透明度為NO.
navigationBarApperance.translucent=NO;
2.設(shè)置NavigationBar的backgroundImage.
[navigationBarApperance setBackgroundImage:[UIImage imageWithColor:kColorNavBG] forBarMetrics:UIBarMetricsDefault];
還有一種方案是在rootViewController的ViewDidLoad方法中設(shè)置:
self.edgesForExtendedLayout=UIRectEdgeNone;
edgesForExtendedLayout是一個類型為UIExtendedEdge的屬性,指定邊緣要延伸的方向,它的默認(rèn)值是UIRectEdgeAll,即視圖向容器四周延伸。