[英]xcode - asset catalog - image type - same scale - different resolutions
我有一个iOS应用程序,该应用程序是几年前开发的,并且使用images.xcassets目录设置了许多控件的背景。 使用contents.json设置图像,其中目标是使用“ idiom”键的iPhone,iPad。 其他规范包括“比例”和“文件名”。 似乎该应用在iOS 8之前运行良好。
截止到今天,有许多iPhone,iPad的高屏幕分辨率设备。 因此,我需要添加更多针对这些高屏幕分辨率设备的图像。
我不知道它的早期处理方式,但是现在在相同的比例系数下有不同的屏幕分辨率。 例如,iPad Pro 12.9“和iPad Pro 11”的比例因子为“ 2x”,但分辨率分别为“ 2048x2732”和“ 1668x2388”。 现在,如果我创建的图像的最高分辨率为2048x2732,则该图像的中心位置不是1668x2388。
您可以遵循两个选项来设置不同设备的背景图像。
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")
}
}
建议:常见且正确的方法是第一选择,但在某些情况下将不适合它。 因此,尝试避免第二种选择,但是如果没有其他选择。 将每个不同的宽高比放置到不同的资产文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.