Почему iOS запускает экран, затем снимок, а затем домашний экран? - PullRequest
0 голосов
/ 26 декабря 2018

Когда я убиваю свое приложение для iOS и перезапускаю его, я вижу быструю последовательность экранов

  1. Launch Screen.Экран определен в LaunchScreen.storyboard.
  2. Снимок.Изображение экрана, которое iPhone создал в последний раз, когда мое приложение было помещено в фоновый режим.
  3. Главный экран.ViewController, который я установил в методе AppDelegate application(_:didFinishLaunchingWithOptions:).

Из документации Apple, которую я прочитал, показалось, что во время запуска приложения, если существует моментальный снимок, то iOSиспользует этот снимок вместо экрана запуска.Почему на экране запуска и снимок экрана?

Эта запись экрана показывает проблему.Экран запуска красный.Главный экран белый.Второй экран зеленый.Я перехожу к зеленому экрану и затем помещаю приложение в фоновый режим, чтобы заставить iOS делать зеленый скриншот.Тогда я убиваю приложение.Когда приложение перезапускается, последовательность запуска / красный, вспышка скриншота / зеленый, дома / белый.Я тестирую на iPhone 6 с iOS 12.1.1.

https://imgur.com/a/EMX4dM1

С https://developer.apple.com/documentation/uikit/uiapplication/1623097-ignoresnapshotonnextapplicationl

Как часть состоянияВ процессе сохранения UIKit захватывает пользовательский интерфейс вашего приложения и сохраняет его в файле изображения.Когда ваше приложение перезапускается, система отображает этот снимок вместо стандартного образа запуска вашего приложения, чтобы сохранить представление о том, что ваше приложение все еще работает.

1 Ответ

0 голосов
/ 26 декабря 2018

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

Вот мой тест:

  • Экран запуска красный

  • Вид контроллера начального вида белый

  • Вид контроллера вторичного вида зеленый

Вот что происходит:

  1. Вы увидите, как я запустился, а затем перешел от белого к зеленому.

  2. Затем я создаю фон приложения, чтобы убедиться, что был сделан снимок.

  3. Затем я возвращаю приложение на передний план и затем захожу в панель запуска приложений, чтобы вы могли видеть снимок, который действительно зеленый.

  4. Затем я убиваю приложение и перезапускаю его.В этой части фильма я использовал замедленное движение, и вы можете ясно видеть, что мы используем красный стартовый экран и постепенно исчезаем до белого исходного контроллера;зеленый цвет больше никогда не появляется.

enter image description here

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

...