Готовая графика в вашем бинарном файле для iPhone и iPad - PullRequest
1 голос
/ 07 апреля 2011

Я собираюсь представить свое первое приложение для iPhone / iPad в AppStore. Функциональность и пользовательский интерфейс моего приложения будут идентичны на обеих платформах (iPhone и iPad), но я хочу убедиться, что представление, которое получают пользователи iPad, не является пиксельным и полным артефактов.

У меня есть два набора графики: один для iPhone и другой для iPad. Как я могу использовать эту графику в одном универсальном бинарном файле, чтобы на каждом типе устройства использовалась соответствующая графика?

Подробно, как было бы здорово здесь!

Спасибо!


РЕДАКТИРОВАТЬ 1

Имейте в виду, я говорю не только о значке, но и о графике WITH * , приложении и заставке . Соотношение экранов у этих двух устройств разное, поэтому дело не только в масштабировании. (Если я ошибаюсь в своих мыслях, укажите это:)

Ответы [ 3 ]

1 голос
/ 07 апреля 2011

Ну, я думаю, вы хотите сделать что-то вроде:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    self.image1 = [UIImage imageNamed:@"img1-ipad.png"];
} else {
    self.image1 = [UIImage imageNamed:@"img1-iphone.png"];
}

Если вы назначаете изображения для розеток из кода, то есть.

Для изображений запуска для iPad добавьте в проект файлы Default-Landscape ~ ipad.png и Default-Portrait ~ ipad.png .

1 голос
/ 07 апреля 2011

К лучшему или к худшему, обычная система для универсального приложения состоит в том, что вы предоставляете две отдельные версии вашей MainWindow NIB; iPad и iPhone имеют разные пропорции и дико различную плотность пикселей, поэтому Apple хочет, чтобы вы рассматривали не просто разрешение пикселей. Вы заметите, что в Xcode 4 у вас есть два отдельных набора «Deployment Info» в вашем проекте и вы можете указать отдельные файлы «Main Interface» там. Здесь также можно указать различные экраны загрузки и значки (перетаскивание проще всего; пусть Xcode гарантирует правильность имен файлов).

Если ваше приложение имеет тот же интерфейс, но настроенный, вполне нормально предоставлять разные NIB, которые назначают те же классы, что и их владельцы. Так, например, Предположим, у вас есть класс MainMenuViewController, полный обычных IBActions и IBOutlets, затем вы можете создать MainMenuViewController-iPhone.xib и MainMenuViewController-iPad.xib. Оба из них назначат свой класс как MainMenuViewController и будут содержать подходящие элементы управления, подключенные. В вашем iPhone MainWindow NIB вы должны были загрузить этот контроллер представления из MainMenuViewController-iPhone, в iPad MainWindow NIB вы бы установили его для загрузки из MainMenuViewController- IPAD. Поскольку оба приводят к созданию экземпляров одного и того же класса и настраиваются таким образом, чтобы класс мог обращаться к соответствующим элементам управления, вы пишете часть модели своего кода только один раз.

Имея это в виду, все, что вам нужно сделать, это использовать графику iPad в своих NIB iPad, использовать графику iPhone (с @ 2x, обрабатываемой автоматически) в NIB iPhone.

Если вам нужно выполнить какие-либо проверки во время выполнения, вы должны взглянуть на идиому пользовательского интерфейса. Например:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    // do something with the iPhone resources
}
else
{
    // do something with the iPad resources
}

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

0 голосов
/ 07 апреля 2011

вот ваш ответ: Имена значков iPad?

РЕДАКТИРОВАТЬ 1:

Вы можете поставить '~ iphone.png' или '~ ipad.png' надо конца имени изображения, чтобы оно загружалось для этого устройства.

больше информации: http://devimages.apple.com/iphone/resources/introductiontouniversalapps.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...