Изображение запуска Cordova iOS изменяется во время загрузки приложения

#ios #cordova #splash-screen #launchimage

#iOS #cordova #заставка #изображение запуска

Вопрос:

Я настроил свои изображения запуска / заставку в папке Resources / splash с обычной схемой именования (по умолчанию ~ ipad.png, по умолчанию-портрет @ 2x ~ ipad.png и т. Д.). Я не установил ни одну из записей UILaunchImage * plist.

Когда я запускаю свое приложение Cordova на iPad 2, оно немедленно загружает одно из моих изображений запуска. Через несколько секунд (когда запускается плагин org.apache.cordova.splashscreen, судя по тому, что я вижу в журнале), изображение запуска изменится, как правило, на что-то другое с другим разрешением, поэтому все изображение сдвигается. После этого изображение остается таким, какое оно есть, пока я не вызову navigator.splashscreen.hide(). Это также произошло на iPhone4.

Опять же, экран-заставка отображается сразу при открытии приложения, сдвигается на несколько секунд позже, загрузка страницы завершается (в соответствии с консолью) примерно через 5 секунд, а затем navigator.splashscreen.hide() получает вызовы в моем событии ready().

Мне кажется, что, возможно, Xcode выбирает одно из моих изображений в качестве изображения запуска по умолчанию, а затем плагин cordova splashscreen выбирает другое, когда оно загружается с другими плагинами. Сначала я получил черную вспышку, и ошибка консоли «Default.png» не найдена, поэтому я добавил «Default ~ ipad.png» к изображениям заставки. Я думал, что для ipad будут использоваться портретные или альбомные изображения, но плагин, похоже, делает это только в том случае, если CDV_IsIPad() и isOrientationLocked.

Я даже попытался вернуть все изображения в Resources / splash к изображениям запуска Cordova по умолчанию. Когда я это делаю, изображение запуска Cordova отображается сразу при загрузке приложения, через несколько секунд, когда загружается плагин Cordova splashscreen, изображение запуска меняется на одно из МОИХ изображений запуска, а затем исчезает в navigator.splashscreen.hide(). Когда это происходит, я нигде не могу найти никаких ссылок на мои изображения запуска, которые я удалил из проекта; ни в Resources / splash, ни в списке. Очень странно.

Есть идеи, почему заставка меняется с помощью плагина cordova splashscreen или что я должен делать, чтобы это исправить?

Комментарии:

1. возможно, вы захотите настроить свои записи в списке. Изображение запуска iOS (первое) отличается от заставки cdv (второе), поэтому вам нужно указать их на одни и те же ресурсы.

Ответ №1:

В итоге я просмотрел запросы на извлечение для плагина Cordova Splashscreen, просто чтобы узнать, обращался ли кто-нибудь к этой проблеме. Похоже, они это сделали!

в src / ios / CDVSplashScreen.m:

 - } else if (CDV_IsIPad() amp;amp; isOrientationLocked) {
-        switch (orientation) {
-            case UIInterfaceOrientationLandscapeLeft:
-            case UIInterfaceOrientationLandscapeRight:
-                imageName = [imageName stringByAppendingString:@"-Landscape"];
-                break;
-
-            case UIInterfaceOrientationPortrait:
-            case UIInterfaceOrientationPortraitUpsideDown:
-            default:
-                imageName = [imageName stringByAppendingString:@"-Portrait"];
-                break;
  

должно быть

      } else if (CDV_IsIPad()) {
         if (isOrientationLocked) {
             imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"-Portrait")];
         } else {
             switch (orientation) {
                 case UIInterfaceOrientationLandscapeLeft:
                 case UIInterfaceOrientationLandscapeRight:
                     imageName = [imageName stringByAppendingString:@"-Landscape"];
                     break;
 
                 case UIInterfaceOrientationPortrait:
                 case UIInterfaceOrientationPortraitUpsideDown:
                 default:
                     imageName = [imageName stringByAppendingString:@"-Portrait"];
                     break;
             }