【发布时间】: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 .
标签: ios asset-catalog