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

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

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

Решение
Итак, ознакомившись с документацией Apple, мы узнали, как правильно добавить экран запуска в ваше приложение для iOS.
https://developer.apple.com/documentation/xcode/specifying-your-apps-launch-screen/
Как добавить экран запуска?
До Xcode 6 единственным вариантом, который у нас был, было предоставление статических изображений внутри каталога активов. Позже, в iOS 8, Xcode позволил нам заменить статическое изображение файлом раскадровки. Со временем и новыми обновлениями на экран запуска добавлялось несколько опций и функций.
Для Xcode 12 и выше есть два способа получить экран запуска:
- Использование раскадровки (по умолчанию), добавленной при создании нового проекта
- Использование
plist
конфигурации
Используя plist
конфигурацию, вы можете установить:
- Изображение
- Должно ли изображение запуска учитывать вставки безопасной области
- Цвет фона
- Видимость панели навигации
- Видимость панели вкладок
- Видимость панели инструментов
- Конфигурация экрана запуска по схеме URL
- В настройках вашей цели выберите вкладку Информация.
- В разделе «Свойства пользовательской цели iOS» разверните клавишу «Экран запуска».
- Нажмите кнопку «Добавить» (+), введите
UILaunchScreen
и нажмите клавишу «Ввод», чтобы добавить экранную клавишу запуска в список свойств. ЕслиUILaunchScreen
ключ уже есть, этот шаг можно пропустить. - Выберите
UILaunchScreen
ключ, нажмите кнопку «Добавить» (+) и добавьте дополнительные ключи, чтобы указать параметры конфигурации для экрана запуска.

Использование файла раскадровки
LaunchScreen.storyboard
Если вы создаете свое приложение для iOS из шаблона раскадровки, Xcode добавляет в ваш проект файл экрана запуска по умолчанию с именем . Изменить LaunchScreen.storyboard
, чтобы настроить экран запуска.
Если ваш проект не содержит файл экрана запуска по умолчанию, добавьте файл экрана запуска и установите файл экрана запуска в качестве цели в редакторе проекта.
- Выберите «Файл» > «Создать» > «Файл».
- В разделе «Пользовательский интерфейс» выберите «Экран запуска» и нажмите «Далее».
- Дайте имя файлу экрана запуска, выберите местоположение, выберите цель, в которую вы хотите добавить файл, и нажмите «Создать».
- В настройках вашей цели выберите вкладку «Общие» и найдите раздел «Значки приложений и изображения запуска».
- Во всплывающем меню «Файл экрана запуска» выберите новый файл экрана запуска.

Экраны запуска сильно кэшируются в iOS для повышения производительности. Поэтому для целей разработки и тестирования вам необходимо удалить приложение и перезапустить устройство (или симулятор).
Также вы можете добавить sleep(5) в didFinishLaunchingWithOptions во время разработки вашего экрана запуска, задержка может быть полезна, чтобы более подробно рассмотреть реализованный вами дизайн.
Большое спасибо, что прочитали…!
Использованная литература:
https://developer.apple.com/documentation/xcode/specifying-your-apps-launch-screen/