Сделайте приложение для iPad универсальным приложением
-
23-10-2019 - |
Вопрос
У меня есть приложение для iPad, которое я хотел бы сделать универсальным, однако это кажется тревожным. Я изменил ситуацию, чтобы поддержать обе сборки, но при строительстве я получаю много ошибок в использовании Uipopovers. Вот мои вопросы:
- Почему
UI_USER_INTERFACE_IDIOM()
Не компилируйте или зарегистрируйтесь на 3.1.3? - Могу ли я условно иметь переменные в определении класса на основе
UI_USER_INTERFACE_IDIOM()
? - Если нет, я должен сделать два разных контроллера представления?
Спасибо!
Решение
Почему UI_USER_INTERFACE_IDIOM () не компилируется или зарегистрируется на 3.1.3?
А UI_USER_INTERFACE_IDIOM
Макро доступен только с 3.2. Те же ограничения для userInterfaceIdiom
свойство Uidevice. Анкет Это означает, что вы можете получить только универсальное приложение, начиная с SDK 3.2.
Могу ли я иметь условно иметь переменные в определении класса на основе UI_USER_INTERFACE_IDIOM ()?
Нет UI_USER_INTERFACE_IDIOM
Макро - это всего лишь сочетание времени выполнения, чтобы получить текущую идиому пользовательского интерфейса устройства.
Если нет, я должен сделать два разных контроллера представления?
Если у вас очень другой пользовательский интерфейс между двумя устройствами, его разумно использовать два разных контроллера представления и создать правильный во время выполнения (например, в контроллере приложения), используя UI_USER_INTERFACE_IDIOM
макро.
Другие советы
Мне очень повезло, что просто выбрал цель, а затем перешел на проект-> обновить текущую цель для iPad.
Мое приложение довольно простое, в основном состоит из просмотров таблиц и просмотров веб -сайтов, но стоит сделать резервную копию и пытаться ...
И да, вы должны отправить его в качестве приложения 3.2, которое может нацелиться 3.1.*
Есть также много других вещей, которые вы должны сделать: убедитесь, что это можно просмотреть на любой ориентации (в первый раз отказано от этого). Убедитесь, что у вас есть все новые изображения. У вас должно быть 3 или 4 значка, вместо того, чтобы только один, например, приложение для iPhone. (Значок iPad, значок iPhone, небольшой значок для прожектора и т. Д.). И, конечно, экранины для iPad для магазина.
Действительно приятный способ, который я использую для тестирования, если это iPad или iPhone, - это проверить, может ли устройство использовать контроллер с разделенным представлением, поскольку для подвижного будущего нет устройства с экраном, таким же небольшим, как iPhone, сможет использовать разделение Просмотр контроллера. Я только что создал функцию, чтобы сделать это для меня:
+(BOOL)isIpad{ return NSClassFromString(@"UISplitViewController") != nil; }
Затем в любом месте моего приложения я хочу отобразить что -то другое в зависимости от устройства, я просто проверяю это:
int width = 150;
if([NabAppDelegate isIpad]){
width = 350;
} else {
width = 150;
}
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5,10,width,25)];
Это намного лучше, чем проверять версию ОС, как я видел.