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值就是从导航条下面开始。