Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 将_HIDPI_图像与视网膜图形结合起来,形成网络视图_Xcode_Macos_Retina Display_Appkit - Fatal编程技术网

Xcode 将_HIDPI_图像与视网膜图形结合起来,形成网络视图

Xcode 将_HIDPI_图像与视网膜图形结合起来,形成网络视图,xcode,macos,retina-display,appkit,Xcode,Macos,Retina Display,Appkit,我们有一个Xcode项目,其中包括用于基于NIB的UI和WebView UI的视网膜图形。该项目为Mac构建了一个应用程序 该项目使用两个独立的构建阶段将这些图形移动到最终的应用程序中。第一个是传统的复制包资源,它将1x和2x图形都放入应用程序包中。第二个阶段是复制文件构建阶段,该阶段使用“图形”子路径将web图形复制到单独的资源目标中 (这避免了一些命名冲突,并允许web设计师使用熟悉的“graphics/which.png”路径。) 在构建此项目时,我们得到一个依赖项分析错误,该错误表示:

我们有一个Xcode项目,其中包括用于基于NIB的UI和WebView UI的视网膜图形。该项目为Mac构建了一个应用程序

该项目使用两个独立的构建阶段将这些图形移动到最终的应用程序中。第一个是传统的复制包资源,它将1x和2x图形都放入应用程序包中。第二个阶段是复制文件构建阶段,该阶段使用“图形”子路径将web图形复制到单独的资源目标中

(这避免了一些命名冲突,并允许web设计师使用熟悉的“graphics/which.png”路径。)

在构建此项目时,我们得到一个依赖项分析错误,该错误表示:

多表示图像whatever@2x.png'不能由 复制文件生成阶段-尝试复制资源生成阶段,或禁用 组合_HIDPI_图像

关闭名为“合并高分辨率艺术品”的部署构建设置非常容易,但这会影响基于NIB的UI中使用的图形以及WebView UI中使用的图形。打开该选项后,
button.png
button@2x.png
合并到应用程序包资源文件夹中的
按钮.tiff
。如果没有它,则使用原始名称

据我所知,应用程序运行正常,但由于默认情况下启用了COMBINE_HIDPI_IMAGES,我怀疑将图形作为单个文件部署会有一些好处(可能加载和缓存速度更快)

理想情况下,我只希望在复制文件构建阶段禁用COMBINE_HIDPI_图像。我想不出一个办法,希望这里的其他人能

2012年8月27日更新

对于这个特定的应用程序,解决问题的最简单方法是用2x版本替换所有HTML图像。由于标签指定了宽度和高度,因此在非视网膜设备上图像会缩小50%。质量很好,因为它们是从本地文件系统加载的,所以没有明显的性能影响

2012年8月28日更新


我们采用的另一种方法是命名约定。一些HTML图像是使用CSS指定的(媒体查询选择视网膜或非视网膜版本)。为了避免将这些图像组合成单个HiDPI图像时出现问题,我们使用了whatever.png和whatever_Retina.png。

我认为唯一的方法是进行一些修改,但是没有其他人回答,因为这对你来说应该是有效的

我建议您在目标上使用一个xcconfig文件(target.xcconfig)来指定要更改的设置,然后在该阶段之前/之后使用构建脚本,将当前的xcconfig替换为两个版本(target-on.xcconfig、target-off.xcconfig)中的一个。这应该是可行的,但是Xcode可能要到稍后才会更新xcconfig文件(我现在无法检查),您必须进行检查


我会让你来决定细节的。有关此方法的更多详细信息(一种不太粗俗的变体)以及如何设置它,请访问my。

如果此方法不起作用,并且您是从xcodebuild生成的,则可以使用
-xcconfig
参数指定您想要的版本。