11

私が取り組んでいるプロジェクトに Images.xcassets を使用して実装しようとしています。私が理解していることから、さまざまなデバイスのさまざまなサイズの画像をすべてそこに配置してから [UIImage imageNamed:@"name_of_image_set"] を呼び出すと、作業中のデバイスの正しい画像が返されます。

4 インチ画面の iPhone 5/5s/5c を除くすべてに対して正しい画像を取得しているようです。その画面サイズでは、3.5 インチ画面の @2x iPhone の画像が得られます。

Images.xcassets の構成のイメージ

これは、画像のあるフォルダーに含まれているjsonです。

{
  "images" : [
    {
      "idiom" : "iphone",
      "scale" : "1x",
      "filename" : "bg.png"
    },
    {
      "idiom" : "iphone",
      "scale" : "2x",
      "filename" : "bg@2x.png"
    },
    {
      "idiom" : "iphone",
      "filename" : "bg-568h@2x.png",
      "subtype" : "retina4",
      "scale" : "2x"
    },
    {
      "idiom" : "ipad",
      "scale" : "1x",
      "filename" : "bg~ipad.png"
    },
    {
      "idiom" : "ipad",
      "scale" : "2x",
      "filename" : "bg@2x~ipad.png"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

すべてが順調に進んでいるようですが、xcassets がどのように機能するかを誤解しているだけですか?

ありがとう

ジョエル・ベル

4

2 に答える 2

0

私は同じ問題を抱えていましたが、ios7でのみプログラムで画像をロードしましたが、同じ問題になるはずです。

私のviewDidLoadに追加しました:

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { // if iOS 7
    self.edgesForExtendedLayout = UIRectEdgeNone; //layout adjustements
}

基本的にiOS7を認識し、レイアウト調整を適用するだけです。このコードを追加した後、正しい画像が選択されました。最後に、イメージをロードしますが、これはあなたが行う必要はありません:

 [productview setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];

ここでもstackoverflowでこの回答が見つかりましたが、もう見つかりませんでした。

于 2014-01-28T10:35:09.300 に答える