Подтвердить что ты не робот

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

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

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

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

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

Кто-нибудь еще столкнулся и/или решил это?

UPDATE: Попробовал удалить и добавить все всплески изображения снова, но безрезультатно. Я попытался удалить меньшие изображения (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, если это по какой-то причине невозможно, решения предоставляются ниже.

4b9b3361

Ответ 1

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

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

От:

else // not iPad

{

    orientedLaunchImageFile = launchImageFile;

}

To:

else // not iPad

{

    orientedLaunchImageFile = launchImageFile;

    /* Edited for 4-inch IP5 */

    if(screenBounds.size.height == 568)

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

}

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

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

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

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

Ответ 2

Исправление для этого (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.

Ответ 3

Белый мерцание

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

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

В способе showvplashScreen (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";
 //        }
}

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

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