В последнее время я много играл с PhoneGap, в частности, чтобы подготовить Marbles2 , а также представить консоль JS для iPhone как собственное приложение. Я всегда хотел создать приложение, которое работало бы на всех устройствах, но получить правильный образ запуска для каждого устройства может быть сложно.
Как работает образ запуска на PhoneGap
В основном есть два образа запуска. Один раз для собственного приложения и один раз (вручную с помощью PhoneGap), пока загружается UIWebView (он же Safari). Нативный обрабатывается приложением в соответствии с документацией на сайте разработчиков Apple, но наложенное изображение жестко закодировано в «Default.png». Это то, что мы исправим.
Изменения в PhoneGapDelete.m
Для правильной работы трех устройств необходимо внести изменения в PhoneGapDelete . м . Изменение следующей строки † :
UIImage* image = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Default" ofType:@"png"]];
imageView = [[UIImageView alloc] initWithImage:image];
[image release];
Для того, чтобы:
UIImage *image = [UIImage imageNamed:"Default"];
imageView = [[UIImageView alloc] initWithImage:image];
// [image release]
† Обратите внимание, что я не изучил Objective-c, я просто бездельничал и достаточно погуглил, чтобы добраться до этой точки!
imageNamed
Причина, по которой мы переключаемся с initWithContentsOfFile на imageNamed по двум причинам:
- initWithContentsOfFile также использует сделанный на заказ pathForResource, который возвращает полный путь к файлу, который мы не хотим, как я объясню.
- initWithContentsOfFile, по- видимому, неправильно выбирает ресурсы @ 2x для дисплеев сетчатки iPhone 4
Добавление стартовых изображений
Теперь вам нужно создать три изображения для:
- iPhone 3GS и ниже
- IPad
- iPhone 4 двойное разрешение
Подробная информация о разрешениях доступна для разработчиков в Apple .
Изображение на iPhone 4 простое, вы называете его Default @ 2x . png и перетащите его в проект xcode. Изображение iPhone 3GS (и ниже) называется Default . png, а также перетянул в проект (вероятно, уже будет изображение по умолчанию для телефонной щели, которое вы перезапишете). Наконец, изображение iPad должно называться Default ~ ipad . png .
Это работает только потому, что мы внесли изменения в использование initWithImage, потому что оно автоматически определит тип устройства и добавит расширение.
Один последний совет
Если вы замечаете, что когда ваше приложение загружает образ запуска, то это происходит из-за того, что UIWebView телефонного промежутка (неправильно) смещен на отрицательные 20 пикселей — мы можем это исправить.
Майкл Брукс (Michael Brooks) написал по-настоящему элегантный небольшой код, который исправляет смещение в веб-представлении, которое также способствует скачкам образа запуска.
Добавьте код из этого списка http://gist.github.com/510407 в свой * AppDelegate.m (если ваше приложение называется jsconsole, добавьте код в jsconsoleAppDelegate.m).
Как только этот код будет введен, у вас будет универсальное приложение с телефонными пробелами с изображениями запуска в соответствующем размере для приложения.
Я использовал эту технику для iOS-версии Консоли JS (хотя я не совсем уверен, что она будет принята в магазине itunes !!!).
Наконец, если вы хотите узнать больше о PhoneGap, моя конференция Full Frontal проводит целый день семинара с Брайаном Леру полностью на PhoneGap, так что проверьте это!
От http://remysharp.com/2010/08/30/universal-launch-images-with-phonegap