更新到iOS 7后,iOS 6中的所有视图都会向上移动,并被导航栏隐藏

我今天将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);
        }
    }
}

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...