Как сделать приложение, совместимое с iphone и iphone4-retina (сделанным в cocos2d), легко адаптируемым для ipad? - PullRequest
2 голосов
/ 24 мая 2011

Мой вопрос прост: 1. Я сделал приложение для iphone, все сделано в cocos2d. 2. Я адаптировал его для iphone4-retina, у всех файлов PNG есть копия -hd.

Запустите в iPhone, приложение отображается правильно (320x480). Запустите в iPhone4-retina, приложение также отображается корректно (640x960).

Но запускайте на iPad, если приложение настроено только на iPhone, оно работает правильно, но только в разрешении iPhone (320x480). Если приложение установлено на iPhone / iPad, оно будет отображаться неправильно.

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

Где вариант? Или есть альтернатива, что у cocos2d есть такой же легкий переключатель для работы? Мне не нужны предложения, такие как использование относительных координат, или что-то требует модификации более двадцати строк кода.

1 Ответ

2 голосов
/ 24 мая 2011

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

В частности, вы можете:

  1. Создайте проект XCode для универсального приложения (armv6 и armv7, для iPad и iPhone) и импортируйте туда свой существующий проект (источник, ресурсы, настройки).

    1b.(Вы можете изменить существующий проект, но это может быть сложнее сделать правильно.)

  2. добавить значки и изображения по умолчанию в соответствии с рекомендациями iPad в дополнение к тем, которые вы используете для iPhone;

Что касается остальных, вы можете использовать подход, аналогичный выделенному здесь для Xibs:

тест для iPad:

+ (Bool) isIpad {return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad);}

перевод названия изображения перед загрузкой:

+ (NSString *) ProperImageFileName: (NSString *) imageName {if ([xxxx isIpad]) {return [NSString stringWithFormat: @ "ipad _% @", imageName];} else {return imageName;}}

Таким образом, если вы находитесь на iPhone, имена изображений не изменяются и будут следовать соглашению iPhone для отображения сетчатки;если вы на iPad, вы меняете имя на лету и используете правильное изображение.(конечно, вы можете использовать соглашение, которое вы предпочитаете для идентификации изображений iPad).

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

...