ios 7 UiView框架问题

我在iOS6和iOS7中运行的是具有NavigationBar的应用程序,它在iOS6上运行良好,但是在iOS7中,所有视图都是一点点,因为它根本没有考虑导航栏。

我曾尝试更改模拟指标选项中的topbar属性,但它不起作用。 它考虑iOS6中NavigationBar的button位置,但在iOS7中,它从屏幕顶部考虑它。

这是什么原因?

提前致谢。

iOS 6截图

iOS 7截图

你应该使用下面的行来修复它在你的看法。

self.edgesForExtendedLayout = UIRectEdgeNone; 

在“iOS 7用户界面转换指南”的布局和外观之一也提到 – 在iOS7中,视图控制器使用全屏幕布局。

如果我们想让视图从导航栏中显示以下位置,可以修改UIViewController的edgesForExtendedLayout这个属性来实现。

edgesForExtendedLayout是一个UIExtendedEdge属性,用于指定要扩展的边的方向。

因为iOS7鼓励全屏布局,所以它的默认值是UIRectEdgeAll,这两个边都是自然延伸的,也就是说,如果在tabBar下还有视图navigationBar,那么视图将覆盖范围扩展到周围区域。

如果我们进行下面的设置视图,那么视图将不会被扩展到栏后面的标签,所以标签出来了。 查看源打印

 self . edgesForExtendedLayout = UIRectEdgeNone ; 

在iOS 7中,视图控制器使用全屏布局。 它在iOS 7 UI过渡指南中提到

如果你想改变布局使用edgesForExtendedLayout属性

例:

  if([UIViewController instancesRespondToSelector:@selector(edgesForExtendedLayout)]) self.edgesForExtendedLayout=UIRectEdgeNone; 

我自己也有类似的问题,发现如果closures导航栏的透明度,视图将像在iOS6中一样下降。

 self.navigationController.navigationBar.translucent = NO; 

在这个答案的时候,iOS 7仍然处于NDA之下,所以不可能写出实际的解决scheme。 无论如何,我已经发布了一个只适用于注册开发者的帮助链接。

====原文:====

阅读iOS 7转换指南 。 其部分“更新用户界面”解释了如何解决您的问题。

 if([self respondsToSelector:@selector(edgesForExtendedLayout)]) [self setEdgesForExtendedLayout:UIRectEdgeBottom];