我有一个iOS应用程序,该应用程序是几年前开发的,并且使用images.xcassets目录设置了许多控件的背景。使用contents.json设置图像,其中目标是使用“ idiom”键的iPhone,iPad。其他规范包括“比例”和“文件名”。似乎该应用在iOS 8之前运行良好。
截止到今天,iPhone,iPad拥有许多高屏幕分辨率的设备。因此,我需要针对这些高屏幕分辨率设备添加更多图像。
我不知道以前如何处理它,但是现在在相同的比例因子下有不同的屏幕分辨率。例如,iPad Pro 12.9英寸和iPad Pro 11英寸的比例系数为“ 2x”,但分辨率分别为“ 2048x2732”和“ 1668x2388”。现在,如果我创建一个针对最高分辨率2048x2732的图像,则该图像的中心分辨率不会达到1668x2388。
答案 0 :(得分:0)
您可以遵循两个选项来设置不同设备的背景图像。
1-)将UIImageView
内容模式设置为.aspectFill
。通过设置此属性,将为您的图像裁剪不同的长宽比,但原始长宽比将受到保护。如果您将重复图像用作背景,则建议使用此选项。
2-)为不同的宽高比和分辨率设置两个不同的资产文件。如果遵循此选项,则在代码中,您需要检查设备并设置正确的图像资产。
let image: UIImage!
if UIDevice().userInterfaceIdiom == .phone {
switch UIScreen.main.nativeBounds.height {
case 1920, 2208:
print("iPhone 6+/6S+/7+/8+")
image = UIImage(named:"StandartBackground.png")
case 2436:
print("iPhone X, XS")
image = UIImage(named:"XBackground.png")
case 2688:
print("iPhone XS Max")
image = UIImage(named:"XSBackground.png")
}
}
建议:常见且正确的方法是第一选择,但在某些情况下不会适合它。因此,尝试避免第二种选择,但是如果没有其他选择。将每个不同的纵横比放入不同的资产文件。