5

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

このプロジェクトでは、2 つの個別のビルド フェーズを使用して、これらのグラフィックを最終的なアプリに移行します。1 つ目は、1x と 2x の両方のグラフィックスをアプリケーション パッケージに取得する従来のコピー バンドル リソースです。2 つ目は、「graphics」サブパスを使用して Web グラフィックを別の Resources 宛先にコピーする Copy Files ビルド フェーズです。

(これにより、名前の競合が回避され、Web デザイナーは使い慣れた "graphics/whatever.png" パスを使用できるようになります。)

このプロジェクトをビルドすると、次のような依存関係分析エラーが発生します。

複数表現のイメージ 'whatever@2x.png' は、ファイルのコピー ビルド フェーズでは処理できません - リソースのコピー ビルド フェーズを試すか、COMBINE_HIDPI_IMAGES を無効にしてください。

「高解像度アートワークの結合」と呼ばれる展開ビルド設定をオフにするのは簡単ですが、これは NIB ベースの UI で使用されるグラフィックスと WebView UI のグラフィックスに影響します。このオプションをオンにするbutton.pngと、アプリケーション パッケージの Resource フォルダー内の にbutton@2x.png結合されます。button.tiffそれがない場合は、元の名前が使用されます。

私が知る限り、アプリケーションは正常に動作しますが、デフォルトで COMBINE_HIDPI_IMAGES がオンに設定されているため、グラフィックを単一のファイルとして展開することには何らかの利点があると思います (おそらく、読み込みとキャッシュが高速になります)。

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

2012 年 8 月 27 日更新

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

2012 年 8 月 28 日更新

私たちが採用したもう 1 つのアプローチは、命名規則によるものでした。一部の HTML 画像は、CSS を使用して指定されます (Retina バージョンまたは非 Retina バージョンを選択するメディア クエリを使用)。これらの画像が 1 つの HiDPI 画像に結合される際の問題を回避するために、whatever.png とwhatever_retina.png を使用しました。

4

1 に答える 1

0

私がそれを行うと考えることができる唯一の方法は少しのハックですが、それがあなたのために働くはずなので、他の誰も答えていません。

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

詳細はあなたにお任せします。このアプローチの(ハックの少ないバリエーション)とその設定方法の詳細については、私のブログを参照してください。

于 2012-08-23T21:47:39.963 に答える