Это правильный способ создания универсального приложения для iOS?Xcode 4 - Кажется, работает? - PullRequest
1 голос
/ 07 сентября 2011

Вот как я сделал универсальное приложение из существующего проекта iPhone, создав ~ ipad.xib (s) с использованием дубликатов, а затем добавив их обратно в резервную копию проекта и проверив универсальный.

Iиспользовал xcode 4.02 с базовым sdk 4.3.3 с целью развертывания 3.1.2.

  1. Создайте резервную копию всего проекта.
  2. Щелкните правой кнопкой мыши на цели iPhone и выберите дубликат,Выберите дубликат для iPad, а не просто дубликат.Это создаст новую папку с именем Resources-iPad с подпапкой, которая будет называться классами, в которой находятся копии всех файлов XIB во всем проекте.(Самое смешное, что когда я смотрю на эти файлы в Finder, у них нет расширения .xib, хотя они показывают расширение в окне xcode - почему? Однако Finder все равно говорит, что это файлы xib.)
  3. На данный момент у меня было две цели.Это казалось неправильным, поэтому я пошел к поиску и сделал резервную копию новой папки Resources-iPad, а затем удалил весь проект.
  4. Скопируйте обратно оригинальный проект iPhone, резервное копирование которого я выполнял на шаге 1.
  5. Добавил резервную копию папки Resources-iPad и отредактировал их, чтобы они выглядели хорошо для iPad.
  6. Теперь у меня была одна цель, которая казалась хорошей, и я сделал ее универсальным устройством вместо iPhone в сводке целей.
  7. Однако при развертывании на симуляторе или устройстве я получал непоследовательное поведение - иногданеправильный xib будет использоваться без видимой причины.
  8. Это исправлено - в xcode, в папке Resources-iPad / classes переименуйте все xibs для ipad из mynibname.xib в mynibname ~ ipad.xib (tilda inспереди и все в нижнем регистре)

Я не смог найти никакой документации о том, нормально ли это делать таким образом.До сих пор он работает на следующих физических устройствах:

iPad 2 с 4.3, iPod touch v1 с 3.1.2, iPod touch v4 (сетчатка) с 4.1

. Это правильный способ созданияуниверсальное приложение?Кажется, теперь это достаточно просто, так как у меня все получилось, но я нашел эту информацию навсегда.Кроме того, у меня нет mainwindow.xib, но есть другие перья, которые загружаются в других местах в виде заголовков разделов таблиц и подробных представлений в приложении с вкладками - поэтому я оставил разделы основного интерфейса пустыми.

О - нетиметь iPad 1 и не могу протестировать на этом устройстве, но он не работает должным образом в симуляторе iPad 3.2, но все другие устройства и симуляторы работают нормально.

1 Ответ

2 голосов
/ 07 сентября 2011

Я видел, что многие люди используют 2 отдельных класса для каждого устройства.Зачем?Не могу сказать!

Я использую 1 класс для iPad и iPhone, только макрос использую для определения текущего устройства:

Например

#define IDIOM           UI_USER_INTERFACE_IDIOM()
#define IPAD            UIUserInterfaceIdiomPad   

if (IDIOM == IPAD)
{
    /* do something specific for iPad. */
} else {
    /* do something specific for iPhone, like set up frames. */
}

Конечно, вам нужно будет создавать версии интерфейсов для iPad, но это очень просто.

Что касается идентификации его как универсального приложения, в настройках вашего проекта есть опция, а также Target Device Family в настройках сборки, для которых вы обязательно установите iPhone / iPad .

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

...