我的应用程序中有一个覆盖整个屏幕的背景图像,两侧有一点额外的视差效果。由于我支持旧手机,我需要具有检查大小范围的逻辑来选择"短"或者"长"图像(4 - > 5)。现在有了新手机,我需要更多的逻辑。
我已经制定了一种有效的方法,但它并不完全适应" ...我想知道我是否遗漏了可能会咬我的东西。 (除此之外,当有新的决议出来时,我显然必须重新审视这一点......)
App目前不支持横向模式。我有一个"常规"使用@ 2x作为默认设置来满足3gs / 4 / 4s的图像,并且在我的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"];
}
我应该以不同的方式做这件事吗?
答案 0 :(得分:1)
我建议你看看size classes。特别是,请使用来自WWDC 2014的UIKit(会话216)视频观看构建自适应应用程序。
您可以使用图片资源目录来定位各种尺寸,而不是对您的尺寸进行硬编码。要开始在资产目录和右侧的检查器中打开图像,请为“宽度/高度”设置一个值。您可以为任意/紧凑/常规尺寸指定特定图像。
例如,您可以为background660x1156.png
和width: Any
设置height: Any & Compact
。然后,这将适用于纵向的任何iPhone目标。
如果您必须定位较旧的iOS版本,那么这可能对您没有帮助,但这是Apple推荐的解决方案。请阅读asset catalog help以获取更多建议。