ios7下的app都是全屏的,意思就是全部控制器的view默認都是從 屏幕的 (0,0)開始。 ios
這時候用到導航欄時,每每會出現被導航欄擋住狀況。app
最明顯的是用到tableView時,第一行的數據會被導航欄遮蓋atom
兩種解決方法:spa
1、在控制器下設置導航控制器的導航欄的translucent(半透明)屬性爲NO,translucent屬性在ios6以前默認爲no,而在ios7下的導航欄默認倒是半透明的,爲yes,因此該屬性不會佔據空間。前提是你不須要導航欄半透明效果。code
2、在控制器下設置導航控制器的導航欄的translucent(半透明)屬性爲NO,translucent屬性在ios6以前默認爲no,而在ios7下的導航欄默認倒是半透明的,爲yes,因此該屬性不會佔據空間。前提是你不須要導航欄半透明效果。blog
@property(nonatomic,assign) UIRectEdge edgesForExtendedLayout NS_AVAILABLE_IOS(7_0); // Defaults to UIRectEdgeAll @property(nonatomic,assign) BOOL extendedLayoutIncludesOpaqueBars NS_AVAILABLE_IOS(7_0); // Defaults to NO, but bars are translucent by default on 7_0. @property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
屬性edgesForExtendedLayout,意思大概是邊緣向四周展開
edgesForExtendedLayout 值是結構體。默認值是 UIRectEdgeAll,也就是上下左右填充滿整個屏幕。
// 1. UIRectEdgeNone 不要往四周邊緣展開 ( 按照非 iOS7 的傳統來展現 )
設置完這一句,壓入桟的控制器frame的y值就是從導航條下面開始。