Сделайте приложение для 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)];

Это намного лучше, чем проверять версию ОС, как я уже видел.

Другие вопросы по тегам