Как исправить проблемы с пользовательским интерфейсом iPhone в режиме увеличения из-за экрана запуска

Nov 29 2022
Предыстория Неделю назад мы обнаружили странную проблему, из-за которой наше iOS-приложение Naukri неожиданно вело себя в режиме увеличения на некоторых устройствах. Пользовательский интерфейс искажался и случайно затемнялся вокруг верхней панели навигации и нижней панели вкладок.
Фото Agence Olloweb на Unsplash

Фон

Неделю назад мы обнаружили странную проблему, из-за которой наше iOS-приложение Naukri неожиданно вело себя в режиме увеличения на некоторых устройствах.

Пользовательский интерфейс искажался и случайно затемнялся вокруг верхней панели навигации и нижней панели вкладок.

Проблема

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

Что такое экран запуска?

Он появляется при первом запуске приложения и создает впечатление, что ваше приложение быстрое и отзывчивое. После того, как ваше приложение загружено, оно будет заменено первым экраном вашего приложения.

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

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

Решение

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

https://developer.apple.com/documentation/xcode/specifying-your-apps-launch-screen/

Как добавить экран запуска?

До Xcode 6 единственным вариантом, который у нас был, было предоставление статических изображений внутри каталога активов. Позже, в iOS 8, Xcode позволил нам заменить статическое изображение файлом раскадровки. Со временем и новыми обновлениями на экран запуска добавлялось несколько опций и функций.

Для Xcode 12 и выше есть два способа получить экран запуска:

  1. Использование раскадровки (по умолчанию), добавленной при создании нового проекта
  2. Использование plistконфигурации

Используя plistконфигурацию, вы можете установить:

  • Изображение
  • Должно ли изображение запуска учитывать вставки безопасной области
  • Цвет фона
  • Видимость панели навигации
  • Видимость панели вкладок
  • Видимость панели инструментов
  • Конфигурация экрана запуска по схеме URL
  1. В настройках вашей цели выберите вкладку Информация.
  2. В разделе «Свойства пользовательской цели iOS» разверните клавишу «Экран запуска».
  3. Нажмите кнопку «Добавить» (+), введите UILaunchScreenи нажмите клавишу «Ввод», чтобы добавить экранную клавишу запуска в список свойств. Если UILaunchScreenключ уже есть, этот шаг можно пропустить.
  4. Выберите UILaunchScreenключ, нажмите кнопку «Добавить» (+) и добавьте дополнительные ключи, чтобы указать параметры конфигурации для экрана запуска.

Использование файла раскадровки

LaunchScreen.storyboardЕсли вы создаете свое приложение для iOS из шаблона раскадровки, Xcode добавляет в ваш проект файл экрана запуска по умолчанию с именем . Изменить LaunchScreen.storyboard, чтобы настроить экран запуска.

Если ваш проект не содержит файл экрана запуска по умолчанию, добавьте файл экрана запуска и установите файл экрана запуска в качестве цели в редакторе проекта.

  1. Выберите «Файл» > «Создать» > «Файл».
  2. В разделе «Пользовательский интерфейс» выберите «Экран запуска» и нажмите «Далее».
  3. Дайте имя файлу экрана запуска, выберите местоположение, выберите цель, в которую вы хотите добавить файл, и нажмите «Создать».
  4. В настройках вашей цели выберите вкладку «Общие» и найдите раздел «Значки приложений и изображения запуска».
  5. Во всплывающем меню «Файл экрана запуска» выберите новый файл экрана запуска.

Экраны запуска сильно кэшируются в iOS для повышения производительности. Поэтому для целей разработки и тестирования вам необходимо удалить приложение и перезапустить устройство (или симулятор).

Также вы можете добавить sleep(5) в didFinishLaunchingWithOptions во время разработки вашего экрана запуска, задержка может быть полезна, чтобы более подробно рассмотреть реализованный вами дизайн.

Большое спасибо, что прочитали…!

Использованная литература:

https://developer.apple.com/documentation/xcode/specifying-your-apps-launch-screen/