Сделайте приложение для iPad универсальным
У меня есть приложение для iPad, которое я хотел бы сделать Universal, однако это кажется пугающе сложным. Я изменил все вокруг так, чтобы я поддерживал обе сборки, но при сборке я получаю много ошибок об использовании UIPopOvers. Вот мои вопросы:
- Почему
UI_USER_INTERFACE_IDIOM()
не скомпилировать или зарегистрироваться на 3.1.3? - Могу ли я условно иметь переменные в определении класса на основе
UI_USER_INTERFACE_IDIOM()
? - Если нет, я должен сделать два разных контроллера представления?
Спасибо!
2 ответа
Почему 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 между двумя устройствами, разумнее использовать два разных контроллера представления и создать правильный во время выполнения (например, в контроллере приложения), используя UI_USER_INTERFACE_IDIOM
макро.
Мне очень повезло, я просто выбрал цель, а затем перешел в Project->Upgrade current target для 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)];
Это намного лучше, чем проверять версию ОС, как я уже видел.