2013-10-15 1 views
1

У меня есть каталог изображений изображений в Xcode 5 и два изображения в нем. enter image description hereXcode Image Assets возвращает неправильное изображение для устройств сетчатки.

Это то, что структура папок выглядит

enter image description here

Это содержимое файла JSon:

{ 
    "images" : [ 
    { 
     "idiom" : "ipad", 
     "scale" : "1x", 
     "filename" : "background.png" 
    }, 
    { 
     "idiom" : "ipad", 
     "scale" : "2x", 
     "filename" : "[email protected]" 
    } 
    ], 
    "info" : { 
    "version" : 1, 
    "author" : "xcode" 
    } 
} 

Каталог

активов является единственным местом, где у меня есть фон и файл с именем background.png. Теперь всякий раз, когда я делаю

[UIImage imageNamed:@"background"]; 

на непостоянную сетчатку IPad я получаю ноны версии сетчатки и на сетчатке IPad я снова получить ноны версии сетчатки. Я использую эту технику со всеми моими другими ресурсами, а также правильно загружает правильное изображение для сетчатки/не сетчатки всюду, кроме этого.

Если я

[UIImage imageNamed:@"[email protected]"] 

он загружает версию сетчатки изображения и в этот момент единственного решения, которое я вижу, это просто проверить масштаб и загрузить соответствующее изображение, но я бы очень хотел это работать.

Любые идеи?

Edit:

Вот ссылка на образец проекта, показывая этот вопрос AssetsCatalogWrongImageLoad

Edit 2 Похоже, что он не имеет ничего общего с каталогом активов. [UIImage imageNamed] просто не работает с этими двумя изображениями, даже если они сами по себе ...

ответ

4

В каталоге активов нет ничего плохого. Проблема в том, как вы тестируете размер изображения.

Глядя на ваш код у вас есть

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"background"]]; 
NSLog(@"Image size should be: %@", [[UIScreen mainScreen] scale] == 1 ? @"1136x1024":@"2732x2048"); 
NSLog(@"Image size is:%@", NSStringFromCGSize(imageView.image.size)); 

Но imageView.image.size возвращает логический размер (в точках, а не в пикселях) для изображения с прошивкой 4 года. Таким образом, ваш тест всегда возвращает размер экрана в точках, загружает ли изображение сетчатки или нет. Используйте разные изображения для сетчатки и графики без сетчатки, если вы хотите проверить, что загружается.

Вот исправленная версия тестового проекта: https://www.dropbox.com/s/ns6ci3b5htkhvi6/AssetsCatalogWrongImageLoad.zip

Что я сделал здесь, чтобы поместить текст «@ 2x» на размерного изображения сетчатки глаза так, когда вы запускаете его на сетчатке IPad вы можете на самом деле см., что используется другое изображение вместо неправильной проверки размера изображения.

+0

Вот и все! Благодаря! Наверное, я смутился, когда @ "background @ 2x" вернул изображение со шкалой 1. – Andrew

-2

Я видел проблему с каталогом активов при использовании png. По какой-то причине он показывал ту же проблему с png, переместившись в jpeg, решил ее. Похоже, что некоторые расширения файлов могут вводить в заблуждение

Смежные вопросы