iPhone 5 splashscreen не отображается правильно-Phonegap



Я обновляю свое приложение PhoneGap iOS, чтобы сделать его совместимым с iPhone 5.



Я вручную скрываю заставку после инициализации моего приложения.



При моделировании iPhone 5: при запуске приложения отображается правильный экран-заставка ([email protected]) (здесь "5"), но быстро скрывает его и вместо этого отображает заставку iPhone 4 (здесь "4"). 4 не охватывает все приложение, таким образом, показывая верхнюю и нижнюю полосы инициализации приложения.



Я не такой. совершенно уверен, как это работает, но я могу придумать два возможных сценария:
1) оба изображения отображаются одновременно, но по какой-то причине 5 автоматически скрывается, в то время как 4 ждет вызова из приложения, чтобы скрыть.
2) в какой-то момент при отключении ручного скрытия экрана-заставки phonegap переключает "истинный" splashscreen на "поддельный", который отображается до вызова javascript из приложения, и phonegap просто не может отображать правильный после этого switcheroo.



Есть еще кто-нибудь столкнулись и / или решили эту проблему?



Обновление:
Попробовал удалить и добавить все изображения всплеска снова, но безрезультатно. Я попытался удалить меньшие изображения (4 и его не сетчатую версию), но даже без меньших изображений, присутствующих в любом месте проекта, я получаю ту же ошибку!



Обновление 2:
Cordova 2.2.0 теперь была выпущена, таким образом, исправляя эту проблему в соответствии с: http://shazronatadobe.wordpress.com/2012/10/27/whats-new-in-cordova-ios-2-2-0/



Итак, рекомендуемая поэтому решение будет состоять в обновлении вашего приложения для использования Cordova 2.2.0, если это по какой-то причине невозможно, решения представлены ниже.

642   3  

3 ответов:

Я получил два ответа в другом месте, но у меня еще не было времени проверить их: от пользователя T123 в группе Phonegap Google : открыть Экземпляраcdvviewcontroller.m -- find - (void) showSplashScreen

Изменение о строке: 690

Откуда:

else // not iPad

{

    orientedLaunchImageFile = launchImageFile;

}

Кому:

else // not iPad

{

    orientedLaunchImageFile = launchImageFile;

    /* Edited for 4-inch IP5 */

    if(screenBounds.size.height == 568)

        orientedLaunchImageFile = [NSString stringWithFormat:@"%@-568h", launchImageFile];

}

И от Бриона, который прокомментировал выше, следующий запрос на вытягивание, который должен быть включен в Cordova 2.2.0: https://github.com/apache/incubator-cordova-ios/pull/50

Правка: попробовал Решение T123, и оно работает на меня! EDIT2: исправление Бриона было включено в Cordova 2.2.0, которая теперь была выпущена!

EDIT3: просто обновляю, чтобы выделить комментарий для тех, кто не утруждает себя их чтением:

Для Phonegap версии 1.4.1 мне удалось заставить исправление Гессиуса работать следующим образом: я скопировал методы showSplashScreen, isIPad, resolveImageResource и определение #define degreesToRadian(x) (M_PI * (x) / 180.0) из файла PGViewController.м к моему MainViewController.файл м. После этого XCode пожаловался, что я присваиваю значения атрибутам только для чтения, поэтому я отредактировал файл заголовка в PhoneGap.основы этих двух атрибутов записи. Я также изменил launchimagefilef из кода Гессиуса на @ "Default". Это сыграло со мной злую шутку. - Джо Диндейл 8 '12 октября в 15: 23

Исправление для этого (https://issues.apache.org/jira/browse/CB-1482) не выходит до 2.2. Это очень рискованно использовать нестабильную версию, и я не утруждаю себя компиляцией из исходного кода, поэтому я попробовал следующий хак:

В MainViewController.m

- (void) showSplashScreen   
{   
    CGRect screenBounds = [[UIScreen mainScreen] bounds];   
    // HACK: PhoneGap pre-2.2 does not support iphone5 splash image well, so we just skip it    
    if (screenBounds.size.height == 568) {  
        return; 
    }   
    [super showSplashScreen];   
}   

Это отключит showSplashScreen для iPhone5, чтобы избежать более короткого изображения запуска, добавленного PhoneGap (начальное изображение запуска iOS отображается нормально). Это сработало для меня, и я почти не замечаю разницы, отрубая showSplashScreen для iPhone5.

Белое Мерцание

У меня была такая же проблема с Cordova 2.2. Я думаю, стоит упомянуть, что мне пришлось сделать дополнительный шаг, чтобы заставить экран-заставку отрисовываться правильно.

Я внес изменения, которые были включены в ответ @Hessius. Но я заметил, что после появления заставки на экране появилась белая вспышка.

В методе showSplashScreen (void)другие могут видеть

if (launchImageFile == nil) { // fallback if no launch image was specified
 //        if (CDV_IsIPhone5()) {
 //            // iPhone 5 or iPod Touch 6th-gen
 //            launchImageFile = @"Default-568h";
 //        } else {
        launchImageFile = @"Default";
 //        }
}

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

Надеюсь, это кому-то поможет!

Comments

    Ничего не найдено.