xcode-资产目录-图像类型-相同比例-不同分辨率

时间:2019-06-24 05:10:41

标签: ios asset-catalog

我有一个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. contents.json中是否有任何特定键可以区分相同比例因子的屏幕分辨率/大小?
  2. 当我搜索Apple的资产目录文档时,可以在此documentation archive中找到它。这是否意味着我们不应再将资产目录用于图像?设置背景图片是否有最新标准?

1 个答案:

答案 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")
    }
}

建议:常见且正确的方法是第一选择,但在某些情况下不会适合它。因此,尝试避免第二种选择,但是如果没有其他选择。将每个不同的纵横比放入不同的资产文件。