ios 7 UiView框架问题
我在iOS6和iOS7中运行的是具有NavigationBar的应用程序,它在iOS6上运行良好,但是在iOS7中,所有视图都是一点点,因为它根本没有考虑导航栏。
我曾尝试更改模拟指标选项中的topbar属性,但它不起作用。 它考虑iOS6中NavigationBar的button位置,但在iOS7中,它从屏幕顶部考虑它。
这是什么原因?
提前致谢。
你应该使用下面的行来修复它在你的看法。
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];