Я хочу создать универсальное приложение с двумя разными файлами XIB. Один для iPhone и один для iPad. Они используют один и тот же код, только разные пользовательские интерфейсы. Как мне создать «универсальное» приложение?
Спасибо.
Я хочу создать универсальное приложение с двумя разными файлами XIB. Один для iPhone и один для iPad. Они используют один и тот же код, только разные пользовательские интерфейсы. Как мне создать «универсальное» приложение?
Спасибо.
Просто скопируйте файл xib, затем переименуйте его в FileName ~ ipad.xib, добавьте его в свой проект, iOS автоматически загрузит правильный файл xib, относящийся к вашему устройству.
Для начала (вы говорите, что создаете приложение на основе представления) создайте его на основе представления iPhone или iPad.
Это даст вам appdelegate, viewcontroller и представление (адаптированное для iPad или iPhone в зависимости от того, какой вариант вы выбрали)
Теперь добавьте еще один xib, перейдите в меню «Файл»> «Новый файл» ... посмотрите в левой части диалогового окна и выберите «Пользовательский интерфейс» в группе iOS. На панели справа выберите «Просмотр» и нажмите «Далее», затем выберите iPad или iPhone (в зависимости от того, что вы выбрали изначально) при создании xib, выберите его, затем выберите владельца файлов слева от основной панели. Затем перейдите в «Утилиты» (правая панель) и выберите «Инспектор идентичности» (значок 3-го параметра вверху), измените класс на тот же viewController, который был создан при создании приложения на основе представления. Вы можете привязать розетки одинаково для обоих представлений, но они будут использовать один и тот же viewController.
Определив, на каком устройстве работает ваше приложение во время выполнения, вы можете использовать соглашение
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
и основывать загрузку представлений на этом условном выражении. Для ясности помните, что вы загружаете перо, используя его имя, чтобы вы могли выбрать перо, соответствующее среде (см. Выше), а фреймворк сделает все остальное.
Имейте в виду, что это никогда не бывает так просто, как вы думаете (если вы никогда не делали этого раньше). Приложения, которые лучше всего используют пространство iPad, как правило, лучше работают с выделенными видами, хотя это, конечно, не всегда так. Любые динамически добавляемые компоненты экрана должны быть закодированы как таковые с учетом разницы в пространстве экрана.
Это может легко превратиться в эссе, я предлагаю вам немного почитать, проверить исходный код и погрузиться в него. Вы многому научитесь, просто экспериментируя.
Создайте такой макрос:
#define IS_IPAD ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
Назовите свои XIB, чтобы вы могли это сделать:
self.viewController = [[ViewController alloc] initWithNibName:IS_IPAD?@"ViewController~iPad":@"ViewController" bundle:nil];
Вы также можете использовать возможности xcode 4. При создании новых проектов есть опция, которая называется «универсальное приложение». Приложения, основанные на этом шаблоне, используют указанное разделение. Вы получаете папки для iphone и ipad с видами в нем.
Если у вас есть существующее приложение, есть опция в Targets -> upgrade для iPad / iPhone.
После этого добавьте код, чтобы проверить, запущено ли приложение на iPad или iPhone.
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
//load xib of ipad
}
else
{
//load xib of iphone
}