2012-08-23 21 views
5

NIBベースのUIとWebView UIの両方のRetinaグラフィックスを含むXcodeプロジェクトがあります。このプロジェクトは、Mac用のアプリケーションを構築します。WebViewのCOMBINE_HIDPI_IMAGESとRetinaグラフィック

プロジェクトでは、2つの別々のビルドフェーズを使用して、これらのグラフィックスを最終的なアプリケーションに移動します。 1つは従来のコピーバンドルリソースで、1xと2xの両方のグラフィックスをアプリケーションパッケージに入れます。もう1つは、Webグラフィックスを「グラフィックス」サブパスを持つ別のリソース送り先にコピーするコピーファイル作成フェーズです。

(これは、いくつかの命名の競合を回避し、Webデザイナーは、おなじみの「グラフィックス/ whatever.png」パスを使用することができます。)

このプロジェクトをビルドするとき、私たちが言う依存関係の分析エラーを取得:

ファイルのコピービルドフェーズでは、複数表現イメージ '[email protected]'を処理できません。コピーリソースのビルドフェーズを実行するか、 COMBINE_HIDPI_IMAGESを無効にしてください。

「高解像度アートワークの結合」というデプロイメントビルド設定をオフにするのは簡単ですが、これはNIBベースのUIとWebView UIで使用されるグラフィックスに影響します。このオプションをオンにすると、button.png[email protected]が結合され、アプリケーションパッケージのResourceフォルダのbutton.tiffになります。それがなければ、元の名前が使用されます。

私の知る限り、アプリケーションは正常に動作しますが、COMBINE_HIDPI_IMAGESはデフォルトでオンに設定されているため、グラフィックを単一のファイルとして展開する利点があると思われます。

理想的には、ファイルコピービルドフェーズでのみCOMBINE_HIDPI_IMAGESを無効にしたいと考えています。私はここに他の誰かうまくいけば、これを行う方法をできる把握することはできません...

を更新2012年8月27日

を、この特定のアプリケーションのために、問題を解決する最も簡単な方法は、にしましたすべてのHTMLイメージを2xバージョンに置き換えます。タグは幅と高さを指定するので、画像は網膜以外の装置では50%縮小されます。品質は良いですし、ローカルファイルシステムからロードされているので、パフォーマンスには影響がありません。

アップデート2012年8月28日

我々が取った別のアプローチは、命名規則にしました。一部のHTML画像は、CSSを使用して指定されています(RetinaまたはRetina以外のバージョンを選択したメディアクエリを使用します)。これらの画像が単一のHiDPI画像に結合される問題を避けるために、whatever.pngとwhatever_retina.pngを使用しました。

答えて

0

私がそれをすると考えることができる唯一の方法は、ちょっとしたハックですが、それ以外の誰もあなたのためにはうまくいきませんでした。

ターゲット(target.xcconfig)でxcconfigファイルを使用して、変更する設定を指定し、現在のxcconfigを2つのバージョン(target-on)に置き換えるフェーズの前後にビルドスクリプトを作成することをお勧めします.xcconfig、target-off.xcconfig)。これはうまくいくはずですが、Xcodeはxcconfigファイルを後で更新することができません(私は現時点で確認する立場にいません)。確認する必要があります。

詳細を把握するために残しておきます。このアプローチの(より少なくhackishバリエーション)とそれを設定する方法の詳細は、私のblogで見つけることができます。

+0

これが動作せず、_xcodebuild_からビルドしている場合は、 '-xcconfig'パラメータを使用して、必要なバージョンを指定することができます。 – Andrew