我今天将iPhone更新为iOS 7,并重新编译我的应用程序,并且.xib文件中的所有视图和设备都被移动,并且其上半部分被导航栏隐藏.在我的viewController我设置self.edgesForExtendedLayout = UIRectEdgeNone;而在iOS 7上,现在一切看起来不错,但是当我使用Deployment Target 6.0编译我的项目并在iOS 6设备上测试时,导航栏再次隐藏所有视图.如何让它们在iOS 7和iOS 6上同时观看?我现在不想破坏iOS 6的支持.
解决方法
所以这是我做的.这不是最干净的代码,你需要确保你不会有滚动视图的奇怪的结果.
基本上我把所有的子视图都移动到导航栏的高度(45).对于我的滚动浏览/桌面浏览,在我的应用程序中总是进入屏幕的底部,我将其高度降低了45,这样您仍然可以达到目的.这是一些应用程序的解决方案,但您应该确保所有的滚动和表格视图都是这样缩小的.
因为它不是递归的,所以您不必担心在scrollviews或任何类似的表视图.
- (void)viewDidLoad { [super viewDidLoad]; if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { self.edgesForExtendedLayout = UIRectEdgeNone; } else { [self moveAllSubviewsDown]; } } - (void) moveAllSubviewsDown{ float barHeight = 45.0; for (UIView *view in self.view.subviews) { if ([view isKindOfClass:[UIScrollView class]]) { view.frame = CGRectMake(view.frame.origin.x,view.frame.origin.y + barHeight,view.frame.size.width,view.frame.size.height - barHeight); } else { view.frame = CGRectMake(view.frame.origin.x,view.frame.size.height); } } }