3

デフォルトの画像が異なるユニバーサルアプリがあります:

Default.png

デフォルト@2x.png

Default-Portrait@2x~ipad.png

等々。どのファイルが使用されたかを実行時にプログラムで判断するにはどうすればよいですか? 私はこれを試しました:

    UIImage *imgUsed = [UIImage imageNamed:@"Default"];

ただし、これは、使用しているシミュレーターに関係なく常に返されますDefault.png(使用されている画面サイズに基づいて、シミュレーターの起動時に正しい画像が表示されます)。

ありがとう。

4

2 に答える 2

1

1 つの iPhone バージョンと 1 つの iPad バージョンのイメージ ビューを使用して、"読み込み中" ビュー コントローラーを作成します。それぞれで、画像を Default または default-iPad として設定します - retina / non-retina バージョンが自動的に選択されます。

ローディング ラベルまたはアクティビティ インジケーターもビュー コントローラーに追加します。

必要な場合は、このビュー コントローラーを提示します。UI_USER_INTERFACE_IDIOM() マクロ (こちらを参照) を使用して、iPhone または iPad で実行しているかどうかを確認し、適切なものをロードできます。

于 2012-11-17T18:02:21.967 に答える
0

これを行う方法は、リバース エンジニアリングのようなものです。画面の縮尺が 1 か 2 か (Retina かどうか)、デバイスのサイズ (iPad、iphone3.5 画面、iphone4.0 画面) を調べ、この情報を使用してベース イメージ名を再作成します。

システムがこの情報を通知する API はありません。

編集:そうです、@jrturtonが提案するごとにUI_USER_INTERFACE_IDIOMマクロを使用してiPad / iPhoneを決定できますが、3.5インチまたは4インチの高さの画像が使用されたかどうかを知るために、電話のサイズを探す必要があります。

于 2012-11-17T17:50:31.250 に答える