繁体   English   中英

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

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

您可以遵循两个选项来设置不同设备的背景图像。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM