Сделайте приложение для iPad универсальным - PullRequest
2 голосов
/ 02 июня 2010

У меня есть приложение для iPad, которое я хотел бы сделать Universal, однако это кажется пугающе сложным. Я изменил все вокруг так, чтобы я поддерживал обе сборки, но при сборке я получаю много ошибок об использовании UIPopOvers. Вот мои вопросы:

  • Почему UI_USER_INTERFACE_IDIOM() не компилируется или не регистрируется в 3.1.3?
  • Можно ли условно иметь переменные в определении класса на основе UI_USER_INTERFACE_IDIOM()?
  • Если нет, я должен сделать два разных контроллера представления?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 02 июня 2010

Почему 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.

2 голосов
/ 02 июня 2010

Мне очень повезло, просто выбрав цель, а затем перейдя в Проект-> Обновить текущую цель для 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)];

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

...