IPhone 4 "с xcassets, не потянув правильное изображение

Я пытаюсь реализовать использование Images.xcassets в проекте, над которым я работаю. Насколько я понимаю, я могу просто поместить все изображения разных размеров для разных устройств, а затем вызвать [UIImage imageNamed: @ "name_of_image_set" ], и он вернет правильное изображение для устройства, над которым я работаю.

Кажется, что вы потянете правильное изображение для всего, кроме iPhone 5/5s/5c, с 4-дюймовым экраном. Для этого размера экрана он дает мне изображение для iPhone @2x с экраном 3,5 дюйма.

Image of config in Images.xcassets

Вот json, который включен в папку с изображениями.

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

Кажется, все в порядке, я просто не понимаю, как должны работать xcassets?

Спасибо

Джоэл Белл

Ответ 1

Я столкнулся с этой проблемой, и проблема, похоже, нацелена на версии iOS ниже 7.0 Решение для меня заключалось в создании отдельного набора изображений с одним изображением @2x на нем и программным обеспечением для создания правильного программного кода путем определения размера экрана iPhone в коде, как сделанный здесь

по теме: Почему мой каталог активов не возвращает изображения R4?

Ответ 2

У меня была такая же проблема, но только в ios7, и я загружаю изображения программно, но это должна быть та же проблема.

В моем представленииDidLoad я добавил:

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

В основном он просто распознает iOS7 и применяет некоторые настройки макета. После добавления этого кода было выбрано правильное изображение. Наконец, я загружаю свое изображение, которое вам не нужно делать:

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

Нашел этот ответ и здесь, в stackoverflow, но больше не нашел его.