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

Posted

技术标签:

【中文标题】xcode - 资产目录 - 图像类型 - 相同的比例 - 不同的分辨率【英文标题】:xcode - asset catalog - image type - same scale - different resolutions 【发布时间】:2019-06-24 05:10:41 【问题描述】:

我有一个多年前开发的 ios 应用程序,它使用 images.xcassets 目录设置许多控件的背景。图像是使用 contents.json 设置的,其中目标是 iPhone、iPad,使用'idiom'键。进一步的规范包括“比例”和“文件名”。似乎这个应用程序在 iOS 8 之前运行良好。

时至今日,iPhone、iPad 的高屏幕分辨率设备很多。因此,我需要添加更多针对这些高屏幕分辨率设备的图像。

不知道之前是怎么处理的,但是现在在同一个比例因子下会有不同的屏幕分辨率。例如,iPad Pro 12.9" 和 iPad Pro 11" 具有“2x”作为比例因子,但分别具有不同的分辨率“2048x2732”和“1668x2388”。现在,如果我创建一个针对最高分辨率 2048x2732 的图像,则图像不会以 1668x2388 分辨率为中心。

    contents.json 中是否有任何特定的键可以区分相同比例因子的屏幕分辨率/尺寸? 当我搜索 Apple 的资产目录文档时,可以在 documentation archive 中找到它。这是否意味着我们不应该再将资产目录用于图像?有设置背景图片的最新标准吗?

【问题讨论】:

您是直接编辑 Contents.json 和文件夹内容吗?如果是这样,为什么不在 Xcode 中编辑资产,您可以轻松地为任何设备和分辨率添加图像? 我建议您删除 images.xcassets 中的启动图像并使用 LaunchScreen 进行设置。它可以节省您的空间。 @ReinhardMänner 虽然我是使用 Xcode 中的资产来完成的,但是否有可能为 iPhone X 和 iPhone XS Max 设置相同的图像,它们具有相同的 3 倍比例但不同的分辨率和纵横比?当我在 iPhone XS Max 的分辨率 (1242x2688) 的中心设置带有徽标的图像时,iPhone X 的徽标没有正确居中。即使我使用“UIGraphicsGetImageFromCurrentImageContext”作为背景拉伸 iPhone X 上的图像看起来水平压缩。 @Aisner 我认为 LaunchScreen 仅在加载应用程序期间使用。我们可以在应用程序的所有场景中使用它吗? @DSuryaPraveen 我认为你不能像 UIViewController 一样使用 LaunchScreen,因为 LaunchScreen 有特定的限制,例如 - 没有任何动画、动态等。你可以制作一个看起来像 LaunchScreen 的 UIView . 【参考方案1】:

您可以按照两个选项为不同设备设置背景图像。

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")
    

建议:常用且正确的方法是第一选择,但有些情况不适合它。因此,尽量避免第二种选择,但如果没有其他选择。将每个不同的纵横比放到不同的资产文件中。

【讨论】:

这是我正在寻找的答案类型。我听说 UIImageView 仅用于显示照片。这也可以用于背景图像吗?你能举个例子吗? 选项“资产目录”是我们项目中目前实现的现有方法。关于添加更多图像以支持更多分辨率,我担心添加越来越多的图像可能会增加应用程序大小。 现在如何添加背景图片? 我正在使用“资产目录”添加图片

以上是关于xcode - 资产目录 - 图像类型 - 相同的比例 - 不同的分辨率的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 6 中创建新的资产目录/图像集

如何使用通过 XCode5 资产目录的切片工具切片的图像

Xcode 5和资产目录:如何引用LaunchImage?

如何在 Xcode 5 产品首选项编辑器的资产目录中访问图像(用于文档图标)

Xcode 5.1 + 资产目录 + 存档 = AppIcon 无效图像路径

如何在 Xcode 资产目录中分配启动图像?