Подтвердить что ты не робот

Универсальное приложение iPad/iPhone для обозначения имен?

В моем приложении мне нужно получить правильное изображение на устройстве устройства iPad/iPhone 4/iPhone 3.

Например:

У меня есть изображение с именем a.png (ширина 40, высота 20) для iPhone 3/iPod и [email protected] (ширина 80, высота 40) для iPhone 4.

Если бы я упомянул код

UIImage *myImage=[UIImage imageNamed:@"a.png"];

myImage содержит (80 * 40) изображение, если оно iPhone 4. myImage содержит (40 * 20) изображение, если оно iPod/iPhone 3.

Мой вопрос заключается в том, как получить изображение для iPad (60 * 30), как указано выше в соглашении об именах.

Я попытался дать a~ipad.png как имя изображения, и он не работает. Можете ли вы указать, где ошибка?

И если я использую условие, используя [UIDevice currentDevice]; isIpod → load (60 * 30) изображение в противном случае загружать изображения для iPhone/iPod он отлично работает.

Но мне нужно заставить его работать без использования условия и использовать соглашение об именах, например a.png для iPhone/iPod, [email protected] для iPhone 4 и аналогично для iPad.

Спасибо заранее.

4b9b3361

Ответ 1

Я знаю, что это старый пост, но я думаю, что скриншот дает более четкое представление об именовании.

enter image description here

С последними устройствами: [email protected]~iphone.png и [email protected]~ipad.png

Ответ 2

В соответствии с этим документом Apple существует соглашение об именах изображений для устройств:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html#//apple_ref/doc/uid/10000051i-CH7-SW17

Говорят, что для iPhone используется "~ iphone", а для iPad нет суффикса. Хотя анекдотически мне говорили, что "~ ipad" также работает.

Ответ 3

В iPad нет соглашения об именах изображений, это только для дисплеев сетчатки, чтобы ваши изображения отображались четкими. Если вы хотите поддерживать iPad, вам нужно создать для него отдельный макет (отдельный xib), даже отдельный набор изображений в большинстве случаев, потому что вам был предоставлен более крупный макет.

Однако вы можете создать для себя соглашение об именах и передать имя строки статической функции, которая преобразует имя в iPad/iphone в зависимости от устройства.

например.

[UIImage imageNamed: [MyAppUtils getImageName:@"a.png"]];

и внутри функции getImageName вы можете сделать свое преобразование (используйте одно и то же имя, если iphone, иначе переименуйте что-нибудь еще)

Ответ 4

В дополнение к сообщению Nate конкретную документацию от Apple, описывающую соглашение об именах, можно найти по адресу:

Поддержка экранов высокого разрешения - Обновление файлов ресурсов изображения

Согласно ссылке, шаблон соглашения об именах выглядит следующим образом:

  • Стандарт: <ImageName><device_modifier>.<filename_extension>
  • Высокое разрешение: <ImageName>@2x<device_modifier>.<filename_extension>

Например: "[email protected]~ipad.png" для изображения с высоким разрешением для iPad или "MyImage ~ iphone.png" для стандартного iPhone-специфического изображения.

Ответ 5

Я использую "Resource Manager", который я разработал, прежде чем создавать какое-либо приложение. Этот менеджер ресурсов может принять решение об именовании после загрузки файлов конфигурации ресурсов (в основном, XML). Таким образом, все прозрачно для программиста GUI, вам нужно только беспокоиться о создании контента:)