Ответ
Пиксель — это наименьший физический элемент дисплея, способный отображать цвет. В iOS-разработке ключевое понятие — это разделение между пикселями (pixels) и точками (points), введённое для поддержки дисплеев с разной плотностью (Retina).
Точки (Points) vs Пиксели (Pixels):
- Точка (pt) — независимая от устройства единица измерения в системах координат UIKit (фреймы, констрейнты).
- Масштабный коэффициент (
scale) определяет, сколько физических пикселей приходится на одну точку.scale = 1.0(не-Retina): 1 точка = 1 пиксель.scale = 2.0(Retina): 1 точка = 2x2 пикселя.scale = 3.0(Super Retina): 1 точка = 3x3 пикселя.
Практическое использование:
// Получение масштаба экрана
let screenScale = UIScreen.main.scale // Например, 2.0 или 3.0
// Конвертация точек в пиксели
let pointWidth: CGFloat = 100
let pixelWidth = pointWidth * screenScale // Реальная ширина в пикселях
// Создание изображения с учётом плотности пикселей
UIGraphicsBeginImageContextWithOptions(CGSize(width: 100, height: 100), false, screenScale)
// ... рисование ...
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// image.size будет (100, 100) points, но image.pngData() создаст файл размером 200x200 или 300x300 пикселей.
// Точная отрисовка на 1 физический пиксель
let onePixelLine = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 1.0 / screenScale))
Важно: Все API UIKit (фреймы, констрейнты) работают в точках. Прямая работа с пикселями требуется редко — в основном для кастомной отрисовки графики (Core Graphics) или обработки изображений, где нужно учитывать scale для избежания размытости.