启用拉伸布局选项以支持更大的iPhone

时间:2015-09-30 16:56:47

标签: ios iphone xcode xcode7

我们在应用程序商店中的iphone应用程序的当前版本只是延伸布局以填充iphone 6和6+。在xcode 7更新之后,应用程序就像在iphone 4上一样运行,顶部有黑条。我知道添加启动故事板可以解决这个问题。问题是我们的布局在6和6+上都没有出现问题。

显然,修改布局以适应这些屏幕尺寸是需要做的事情,但我们处在紧要关头,只需要尽快推出幕后功能更新推送给我们的用户。无论如何都要回到UIView伸展以填满屏幕的旧行为?

1 个答案:

答案 0 :(得分:1)

这不会立即得到解决,但它是一个值得尝试的快速补丁。

如果您的观点始终是纵向的,那么这应该适合您。如果它需要在iPhone 6(s)+上旋转或UISplitViewController,那么它可能不会。

在视图控制器中缩放每个子视图以获得新的屏幕尺寸。为设备屏幕大小声明几个宏:

#define kScreenWidth  [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height

然后向视图控制器添加一个方法,该方法遍历所有子视图,以根据iPhone 4屏幕大小按比例调整每个视图的大小。

- (void)resizeSubviews:(UIView *)view {
    CGRect frame = view.frame;
    frame.origin.x = frame.origin.x / 320.0f * kScreenWidth;
    frame.origin.y = frame.origin.y / 480.0f * kScreenHeight;
    frame.size.width = frame.size.width / 320.0f * kScreenWidth;
    frame.size.height = frame.size.height / 480.0f * kScreenHeight;
    view.frame = frame;

    for (UIView *subview in view.subviews) {
        [self resizeSubviews:subview];
    }
}

然后在使用以下内容添加子视图后调用该方法:

[self resizeSubviews:self.view];

有很多方法无法使用,但在从iPhone 4s切换到iPhone 5时,它覆盖了我。