12

バンドルまたはアセット カタログに 3 つの画像があるとします。

  1. デフォルト~iphone.png
  2. Default@2x~iphone.png
  3. デフォルト-568h@2x.png

iOS 4 以降では、UIImage コンストラクターは次のようにイメージ名を取得できます。

[UIImage imageNamed:@"Default"];

3.5 インチの Retina ディスプレイ (iPhone) を使用している場合、自動的に画像が選択されます (2)。非 Retina ディスプレイの場合は (1) を選択します。これは素晴らしい。

4 インチ Retina (iPhone 5) 起動イメージに指定されているように、イメージ 3 に名前を付けました。4 インチの Retina ディスプレイで実行しているときに、同じ UIImage コンストラクターで返されるように、画像 (3) に名前を付ける方法はありますか?

おそらくこれはまだ実装されていないか、利便性に期待しすぎています...画面のサイズに基づいて画像を選択するために、コード内の条件付きロジックを回避しようとしています。

4

3 に答える 3

12

私も同じ問題を抱えていましたが、iPhone 5 /iPodTouch第5世代にはそのような動作はないことがわかりました。

アプリがそのようなデバイスで実行されているかどうかを手動で判断し、それに応じてファイル名を変更する必要があります。

この方法を使用して、アプリがiPhone 5 /iPodTouch第5世代で実行されているかどうかを確認しました。

#define IS_PHONEPOD5() ([UIScreen mainScreen].bounds.size.height == 568.0f && [UIScreen mainScreen].scale == 2.f && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)

次に、次のように画像名を調整できます。

if(IS_PHONEPOD5()) {
   myImageView.image = [UIImage imageNamed:@"MyImage-568h.png"];
} else {
   myImageView.image = [UIImage imageNamed:@"MyImage.png"];
}

更新また、探しているものを実装
するUIImageカテゴリをgithub(リンク)で見つけました。存在しないファイルのフォールバックはありませんが、自分で簡単に実装できます。

于 2012-10-04T18:14:45.867 に答える
2

4 インチのイメージ タイプはありません。他のすべてと異なる唯一の点はDefault-568h@2x.png、iPhone 5 の起動イメージとして使用され、アプリケーションがより長い画面をサポートし、レターボックス化されるべきではないことを OS に通知することです。

コードを処理するか、さまざまな画面サイズの自動レイアウトを処理する必要があります。特別な自動画像タイプはありません。iOS 4 以降と同じ、標準の画面イメージ タイプまたは Retina イメージ タイプのいずれかです。

于 2012-10-04T18:11:09.307 に答える