在UINavigationController中设置self.view的fram坐标起点

     在设置了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。

你可能感兴趣的:(在UINavigationController中设置self.view的fram坐标起点)