Ответ
В UIKit начало системы координат (origin) находится в верхнем левом углу.
Основные правила:
- Ось X: Увеличивается вправо.
- Ось Y: Увеличивается вниз.
Пример размещения view:
// View будет расположен в 50 пунктах от левого края
// и в 100 пунктах от верхнего края родительской view
let blueView = UIView(frame: CGRect(x: 50, y: 100, width: 120, height: 80))
parentView.addSubview(blueView)
Важные нюансы:
- Система координат относительна. Координаты
UIViewзадаются относительно границ (bounds) ее супервью (родителя). - Исключение — UIWindow: Его система координат привязана к физическому экрану устройства, с началом в верхнем левом углу с учетом ориентации.
- Отличие от Core Graphics: В некоторых низкоуровневых контекстах Core Graphics (например, при рисовании в
CGContext) начало координат по умолчанию может быть в нижнем левом углу. UIKit автоматически настраивает контекст вdraw(_:), чтобы согласовать это.
Практическое следствие: При вычислении позиций помните, что view.frame.origin.y = 0 означает «прижат к верху родителя», а не ко дну.