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