0

我的应用程序中有一个覆盖整个屏幕的背景图像,两侧有一点额外的视差效果。由于我支持旧手机,我需要有逻辑来检查大小范围以选择“短”或“长”图像(4 -> 5)。现在有了新手机,我需要更多的逻辑。

我已经制定了一种有效的方法,但它并不完全是“自适应的”......我想知道我是否错过了可能会咬我的东西。(除此之外,当有新的决议出来时,我显然必须重新审视这个......)

应用程序目前不支持横向模式。我有一个“常规”图像来满足 3gs/4/4s 的需求,@2x 是默认设置,在我的 rootcontroller 的 ViewDiwLoad 中,我运行了这个代码,我已经测试过它并且它可以工作:

    if (screenBounds.size.height == 568) {
    backg.image = [UIImage imageNamed:@"background660x1156.png"];
}else if (screenBounds.size.height == 667) {
    backg.image = [UIImage imageNamed:@"background770x1334.png"];
}else if (screenBounds.size.height > 667) {
    backg.image = [UIImage imageNamed:@"background1262x2228.png"];
}

我应该以不同的方式做到这一点吗?

4

1 回答 1

1

我建议你看看size classes。特别是,观看来自WWDC 2014的使用 UIKit 构建自适应应用程序(第 216 节)视频。

您可以使用图像资产目录来定位各种尺寸,而不是对尺寸进行硬编码。要开始在资产目录和右侧的检查器中打开图像,请设置宽度/高度值。您可以为 Any/Compact/Regular 尺寸指定特定图像。

图像资产中的尺寸类别

例如,您可以设置您的background660x1156.pngforwidth: Anyheight: Any & Compact。然后,这将适用于纵向的任何 iPhone 目标。

如果您必须针对较旧的 iOS 版本,那么这可能对您没有帮助,但这是 Apple 推荐的前进解决方案。阅读资产目录帮助以获得更多建议。

于 2014-09-25T09:12:25.433 回答