ios7之前的版本中UIViewController中的view在顯示後會自動調整爲去掉導航欄的高度的,控件會自動在導航欄以下襬放。
在iOS7中UIViewController的wantsFullScreenLayout屬性被捨棄了,所有的UIViewController創建後默認就是full Screen的,因此如果帶導航欄的應用界面中的部分控件會被導航欄覆蓋掉。
解決方案:可以使用ios7種UIViewController新增的屬性extendLayoutIncludesOpaqueBars和edgesForExtendedLayout來解決。
其中這個屬性指定了當bar使用不透明圖片時,試圖是否延伸至bar所在區域,默認值爲NO。而edgesForExtendedLayout
其中這個屬性指定了當Bar使用了不透明圖片時,視圖是否延伸至Bar所在區域,默認值時NO。而edgesForExtendedLayout則是表示視圖是否覆蓋到四周的區域,默認是UIRectEdgeAll,即上下左右四個方向都會覆蓋,那麼爲讓頂部不進行延伸到導航欄覆蓋的區域,我們可以把頂部區域延伸去掉。
實現代碼如下:
self.extendedLayoutIncludesOpaqueBars = NO;
self.edgesForExtendedLayout = UIRectEdgeBottom | UIRectEdgeLeft | UIRectEdgeRight;