我们有一个 Xcode 项目,其中包括用于基于 NIB 的 UI 和 WebView UI 的 Retina 图形。这个项目为 Mac 构建了一个应用程序。
该项目使用两个单独的构建阶段将这些图形移动到最终应用程序中。第一个是传统的 Copy Bundle Resource,它将 1x 和 2x 图形都放入应用程序包中。第二个是复制文件构建阶段,它将 Web 图形复制到具有“图形”子路径的单独资源目标中。
(这避免了一些命名冲突,并让网页设计师使用熟悉的“graphics/whatever.png”路径。)
在构建这个项目时,我们得到一个依赖分析错误,上面写着:
复制文件构建阶段无法处理多表示图像“whatever@2x.png” - 尝试复制资源构建阶段,或禁用 COMBINE_HIDPI_IMAGES。
关闭名为“Combine High Resolution Artwork”的部署构建设置很容易,但这会影响基于 NIB 的 UI 以及 WebView UI 中使用的图形。打开该选项,button.png
并button@2x.png
合并到button.tiff
应用程序包的 Resource 文件夹中。没有它,将使用原始名称。
据我所知,应用程序运行正常,但由于默认情况下设置了 COMBINE_HIDPI_IMAGES,我怀疑将图形部署为单个文件有一些好处(可能更快地加载和缓存。)
理想情况下,我只想在 Copy Files 构建阶段禁用 COMBINE_HIDPI_IMAGES。我想不出办法做到这一点,希望这里的其他人可以......
2012 年 8 月 27 日更新
对于这个特定的应用程序,解决问题的最简单方法是将所有 HTML 图像替换为 2x 版本。由于标签指定了宽度和高度,因此图像在非 Retina 设备上缩小了 50%。质量很好,因为它们是从本地文件系统加载的,所以对性能没有明显的影响。
2012 年 8 月 28 日更新
我们采用的另一种方法是使用命名约定。一些 HTML 图像是使用 CSS 指定的(通过媒体查询选择 Retina 或非 Retina 版本。)为了避免将这些图像组合成单个 HiDPI 图像时出现问题,我们使用了whatever.png 和whatever_retina.png。