В каких единицах измерения работает CGPoint в iOS/macOS?

«В каких единицах измерения работает CGPoint в iOS/macOS?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

CGPoint оперирует точками (points), а не физическими пикселями.

  • Точка (point) — это независимая от разрешения абстрактная единица в системе координат Core Graphics.
  • Масштабирование точек в пиксели (pixels) выполняется автоматически системой с учетом масштабного коэффициента (scale factor) экрана.
    • Стандартный экран: 1 point = 1 pixel (scale 1.0).
    • Retina экран: 1 point = 2 pixels (scale 2.0) или 3 pixels (scale 3.0).

Пример и вывод:

let origin = CGPoint(x: 10, y: 20)
print(origin) // (10.0, 20.0) - это точки (points)

// На iPhone с Retina (scale 2.0) эти координаты займут:
// 10 points * 2.0 = 20 pixels по оси X
// 20 points * 2.0 = 40 pixels по оси Y

Практическое правило: Всегда проектируйте UI и анимации, работая с точками. Система сама позаботится о четком отображении на экранах с разной плотностью пикселей.