← Назад к вопросам

Что такое points?

1.0 Junior🔥 91 комментариев
#UIKit и верстка

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое Points?

В контексте разработки под iOS, Points (или Points, pt) — это абстрактная единица измерения, используемая в системе координат и для указания размеров элементов интерфейса в UIKit и SwiftUI. Это не физические пиксели на экране устройства, а логические единицы, которые позволяют создавать интерфейсы, независимые от плотности пикселей конкретного дисплея (device-independent).

Основная идея и соотношение с пикселями

Ключевая концепция заключается в том, что один point может соответствовать нескольким физическим пикселям (pixels) на экране. Это соотношение определяется scale factor устройства (часто называемым @1x, @2x, @3x).

  • На устройствах с @1x (например, iPhone 3GS) 1 point = 1 pixel.
  • На устройствах с @2x (например, большинство iPhone до 12 Pro) 1 point = 2x2 (4) pixels.
  • На устройствах с @3x (например, iPhone 12 Pro Max, 13 Pro Max) 1 point = 3x3 (9) pixels.

Это позволяет вам в коде задать размер кнопки, например, как 100x50 points, и на всех устройствах она будет иметь одинаковый физический размер (примерно в миллиметрах на экране), но на экране с высокой плотностью пикселей (Retina) она будет отрисована с большим количеством пикселей, что обеспечит более четкое и детализированное изображение.

Практическое применение и примеры в коде

В UIKit (например, при работе с UIView, UIImage) вы практически всегда работаете с points.

// Создание UIView с размером в points
let view = UIView(frame: CGRect(x: 20, y: 20, width: 200, height: 100))
// frame.size.width = 200 points, height = 100 points

// Установка шрифта - размер также указывается в points
label.font = UIFont.systemFont(ofSize: 16) // 16 points

Когда вы готовите ресурсы (изображения) для проекта, вы предоставляете их в нескольких масштабах, соответствующих points.

// В Assets Catalog или в коде вы указываете изображение для определенного scale.
// Для изображения с логическим размером 100x100 points вам нужно предоставить:
// - @1x: 100x100 pixels
// - @2x: 200x200 pixels
// - @3x: 300x300 pixels
UIImage(named: "myIcon")
// Система автоматически выберет версию, соответствующую scale factor устройства.

В SwiftUI концепция points также является фундаментальной, хотя часто более абстрагированной.

// Размеры в SwiftUI также основаны на points
Rectangle()
    .frame(width: 150, height: 75) // 150x75 points
Text("Hello")
    .font(.system(size: 24)) // 24 points

Почему это важно? Преимущества использования Points

  • Консистентность физических размеров: Интерфейс выглядит и воспринимается пользователем одинакового размера на разных устройствах (от iPhone SE до iPhone Pro Max).
  • Адаптивность к разным плотностям пикселей: Не нужно писать отдельный код для каждого типа дисплея. Система автоматически масштабирует отрисовку.
  • Упрощение работы с графикой: Дизайнеры могут создавать макеты и ресурсы, ориентируясь на одну логическую систему измерений (points), а затем просто масштабировать ресурсы для нужных факторов (@2x, @3x).
  • Совместимость с будущими устройствами: Если появится устройство с @4x, ваш интерфейс, заданный в points, автоматически будет правильно отображен.

Отличие от пикселей и важные нюансы

  • Не путать points с pixels: Когда вы получаете frame или bounds у UIView, значения будут в points. Чтобы получить реальные пиксели на экране (например, для точной отрисовки в Core Graphics), нужно учитывать contentScaleFactor слоя (layer.contentScaleFactor).
  • Не влияет на точность: Работа в points не снижает точность или контроль над интерфейсом. Все операции отрисовки и layout происходят с высокой точностью, и система преобразует points в пиксели при рендеринге.
  • Единая система для всех Apple устройств: Концепция points применяется не только на iPhone, но и на iPad, Mac (с учетом своих scale factors), что обеспечивает единый подход к разработке интерфейса.

Таким образом, Points — это фундаментальная абстракция в iOS разработке, которая обеспечивает создание device-independent пользовательских интерфейсов, сохраняющих одинаковый физический размер и высокое качество отображения на огромном разнообразии устройств Apple с разной плотностью и размером экранов.

Что такое points? | PrepBro