在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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容