2012-08-23 41 views
5

我們有一個Xcode項目既包括視網膜圖形基於NIB的用戶界面和UI網頁視圖。該項目爲Mac構建了一個應用程序。COMBINE_HIDPI_IMAGES和視網膜圖形的的WebView

該項目採用兩個獨立的構建階段將這些圖形移動到最終的應用程序。第一個是傳統的Copy Bundle Resource,它可以將1x和2x圖形集成到應用程序包中。第二個是複製文件構建階段,它將Web圖形複製到具有「圖形」子路徑的單獨資源目標中。

(這樣就避免了一些命名衝突,讓網頁設計師使用熟悉的「圖形/ whatever.png」路徑)。

在構建這個項目中,我們得到一個相關性分析錯誤,說:

多表示圖像「[email protected]」不能由 拷貝文件處理建設階段 - 嘗試複製資源建設階段,或禁用 COMBINE_HIDPI_IMAGES。

很容易關閉部署生成設置,名爲「合併高分辨率圖稿」,但這會影響基於NIB的用戶界面以及WebView用戶界面中使用的圖形。打開該選項後,button.png[email protected]合併到應用程序包的Res​​ource文件夾中的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。

回答

0

我能想到做到這一點的唯一方法是一個黑客位,但沒有其他人這樣回答,因爲它應該爲你工作。

我建議您在目標(target.xcconfig)上使用xcconfig文件來指定要更改的設置,然後在階段之前/之後生成腳本,以兩個版本之一替換當前xcconfig(target-on .xcconfig,target-off.xcconfig)。這應該工作,但是Xcode可能不會更新xcconfig文件,直到後來(我目前無法檢查),您必須檢查。

我把它留給你找出細節。有關此方法的更多細節(以及更少的變化)以及如何設置,請參見我的blog

+0

如果這不起作用,並且您正在使用_xcodebuild_構建,則可以使用'-xcconfig'參數來指定所需的版本。 – Andrew

相關問題