Ответ
UIScreen — это класс в UIKit, который представляет физический или виртуальный дисплей, подключенный к устройству. Он предоставляет доступ к основным метрикам экрана, необходимым для корректного размещения и масштабирования интерфейса.
Ключевые свойства и методы:
UIScreen.main— Синглтон, представляющий основной экран устройства.bounds(CGRect) — Границы экрана в точках (points). Это основная система координат для UIKit.scale(CGFloat) — Коэффициент масштабирования между точками и физическими пикселями. Например, 2.0 для Retina, 3.0 для Super Retina.nativeBounds(CGRect) — Физические размеры экрана в пикселях.traitCollection— Коллекция характеристик экрана (размерный класс, контрастность).
Пример использования для адаптивного layout:
let screen = UIScreen.main
let screenWidthInPoints = screen.bounds.width
let screenHeightInPoints = screen.bounds.height
let pixelDensity = screen.scale // Например, 2.0
let physicalWidthInPixels = screen.nativeBounds.width // screenWidthInPoints * pixelDensity
print("Экран: (screenWidthInPoints)x(screenHeightInPoints) pts, масштаб: (pixelDensity)x")
Важные нюансы:
- Safe Area:
boundsне учитывает безопасные области (вырез, индикатор дома). Для этого используетсяUIView.safeAreaLayoutGuide. - Несколько экранов: На iPadOS и при использовании внешних дисплеев можно получить массив
UIScreen.screens. - Яркость: Через
UIScreen.main.brightnessможно получить или установить яркость основного экрана (требует разрешения пользователя).