Универсальные приложения работают неправильно. Почему?

Какая часть приложения «запускает» приложение для iPad как собственное приложение, а не запускает версию для iPhone в универсальном бинарном файле?

Что мне нужно изменить, чтобы сделать мое приложение универсальным после нажатия «Обновить текущую цель для iPad»? Мое приложение работает вне симулятора, но мои изображения слишком малы, а мой текст неуместен. Что мне здесь не хватает?

С другой стороны, как заставить универсальное приложение работать как приложение для iPhone внутри симулятора на iPad? (При изменении «целевого семейства устройств» в симуляторе будет работать версия приложения для iPad, но не версия для iPhone.)

ИЗМЕНИТЬ:

Мне кажется, что эти вопросы как бы дополняют друг друга. Хотя я подозреваю, что в обеих ситуациях работает один и тот же механизм, я не уверен, что это такое и как он работает.


person Moshe    schedule 14.10.2010    source источник


Ответы (3)


В файле info.plist есть ключи, помещенные в параметр семейства целевых устройств. iPad ищет эти plist-ключи, чтобы определить, запускать ли их как универсальное приложение или в режиме эмуляции iPhone, а также какие xib-файлы идиом использовать для запуска приложения.

Добавлено: если у вас нет и указан в plist файл .xib, подходящий для идиомы iPad, то используется файл с неправильной рамкой UIWindow, которая заканчивается в верхнем левом углу.

person hotpaw2    schedule 14.10.2010
comment
Бинго! У нас есть победитель. Спасибо. - person Moshe; 14.10.2010

Вам нужно перекодировать приложение для iPad, чтобы текст и изображения располагались так, как вы хотите, когда оно работает на iPad.

Чтобы заставить его работать как приложение для iPhone, вы перестанете быть универсальным.

person Nick Moore    schedule 14.10.2010
comment
Мой второй вопрос: где вы мешаете ему быть универсальным? Конфигурация сборки не помогает. Как я уже сказал, это просто заставляет приложение работать в симуляторе. - person Moshe; 14.10.2010

Параметр сборки называется «Семейство целевых устройств».

Вот где это начинается.

Если вы написали универсальное приложение и хотите принудительно включить режим iPhone на iPad, вы переключаете целевое семейство устройств только на iPhone, и оно будет игнорировать все остальное.

person M. Ryan    schedule 14.10.2010
comment
Это заставляет приложение iPad работать только внутри симулятора iPhone. - person Moshe; 14.10.2010
comment
Убедитесь, что вы удалили приложение с устройства и очистили все цели, прежде чем приступать к этому. Я считаю, что PList может быть привередлив к изменениям, особенно на устройстве. - person M. Ryan; 14.10.2010