Сколько экземпляров UIScreen может быть доступно в iOS-приложении?

«Сколько экземпляров UIScreen может быть доступно в iOS-приложении?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Количество экземпляров UIScreen динамически определяется числом подключенных физических дисплеев.

Основные принципы:

  1. Главный экран: Всегда существует UIScreen.main.
  2. Внешние дисплеи: Доступны через массив UIScreen.screens. При подключении/отключении дисплеев этот массив обновляется.

Практическое использование:

// Получение списка всех активных экранов
let allScreens = UIScreen.screens // [UIScreen]
print("Active screens: (allScreens.count)")

// Реакция на подключение внешнего дисплея
NotificationCenter.default.addObserver(
    forName: UIScreen.didConnectNotification,
    object: nil,
    queue: .main
) { notification in
    if let newScreen = notification.object as? UIScreen {
        // Настроить окно (UIWindow) для нового экрана
    }
}

Ограничения:

  • На iPhone обычно 1 экран.
  • На iPad с поддержкой Stage Manager или при подключении к внешнему монитору/проектору может быть от 2 до 4 экранов.
  • Теоретический максимум зависит от аппаратных возможностей и операционной системы.