【问题标题】:xcode - asset catalog - image type - same scale - different resolutionsxcode - 资产目录 - 图像类型 - 相同的比例 - 不同的分辨率
【发布时间】: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 分辨率为中心。

  1. contents.json 中是否有任何特定的键可以区分相同比例因子的屏幕分辨率/尺寸?
  2. 当我搜索 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 .

标签: ios asset-catalog


【解决方案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 仅用于显示照片。这也可以用于背景图像吗?你能举个例子吗?
  • 选项“资产目录”是我们项目中目前实现的现有方法。关于添加更多图像以支持更多分辨率,我担心添加越来越多的图像可能会增加应用程序大小。
  • 现在如何添加背景图片?
  • 我正在使用“资产目录”添加图片
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 2015-02-13
  • 1970-01-01
相关资源
最近更新 更多