PK8*_*K86 33 frame uinavigationbar uiviewcontroller uiview ios7
我在iOS6和iOS7中运行相同的应用程序,它有NavigationBar.It在iOS6上运行良好,但在iOS7中,所有视图都有点像是根本没有考虑导航栏.
我尝试在模拟指标选项中更改顶部栏属性,但它不起作用.它考虑了iOS6中NavigationBar的按钮位置,但在iOS7中,它从屏幕顶部开始考虑它.
它是什么原因?
提前致谢.


sin*_*h99 53
您应该使用以下行在视图中修复它.
self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
PK8*_*K86 14
在用于布局和外观的"iOS 7 UI过渡指南"中还提到了 - 在iOS7中,视图控制器使用全屏布局.
如果我们希望视图从导航栏显示以下位置,则可以修改UIViewController的edgesForExtendedLayout这个属性来实现.
edgesForExtendedLayout是一个类型UIExtendedEdge属性,指定要扩展的边的方向.
因为iOS7鼓励全屏布局,其默认值自然是UIRectEdgeAll,两者都围绕边缘延伸,也就是说,如果甚至有视图navigationBar,在tabBar下,则视图会将覆盖范围扩展到周围区域.
如果我们进行以下设置视图,那么视图将不会扩展到栏后面的那些视图,因此标签出来了.查看源打印
self . edgesForExtendedLayout = UIRectEdgeNone ;
Run Code Online (Sandbox Code Playgroud)
小智 8
在iOS 7中,视图控制器使用全屏布局.在iOS 7 UI Transition Guide中提到了它
如果要更改布局,请使用 edgesForExtendedLayout属性
例:
if([UIViewController instancesRespondToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout=UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
我自己也有类似的问题,发现如果关闭导航栏的半透明效果,视图将会像在iOS6中一样下降.
self.navigationController.navigationBar.translucent = NO;
Run Code Online (Sandbox Code Playgroud)