在设置了NavigationController,在self.view中添加视图,会发现默认的坐标起点是屏幕的左上角。这是因为在iOS7后,NavigationController有一个新属性“translucent”默认为YES;(这个属性就是设置导航栏是否具有透明度这个功能)。
取消透明度:
[[UINavigationBar appearance] setTranslucent:NO]; //全局去掉透明度
self.navigationController.navigationBar.translucent =NO; //单独去掉一个controller的导航栏透明度
(1)当translucent = YES,controller中self.view的原点是从导航栏左上角开始计算;
在translucent = YES的时候,Controller中改变self.view计算原点位置:
self.edgesForExtendedLayout =UIRectEdgeNone;//从navigationBar下面开始计算一直到屏幕tabBar上部
self.edgesForExtendedLayout =UIRectEdgeAll;//从屏幕边缘计算(默认)
self.edgesForExtendedLayout =UIRectEdgeTop;//navigationBar下面开始计算一直到屏幕tabBar上部
self.edgesForExtendedLayout =UIRectEdgeBottom;//从navigationBar下面开始计算一直到屏幕底部
(2)当translucent = NO,controller中self.view的原点是从导航栏左下角开始计算;
translucent = NO的时候,设置self.edgesForExtendedLayout 是没有效果的。
注:
如果想单独的将一个controller导航栏的Translucent设置为YES;
self.navigationController.navigationBar.translucent =YES; 然后在viewWillDisappear方法中设置回NO,这样就不会影响外面的Controller。