Что хранит свойство bounds у UIView?

«Что хранит свойство bounds у UIView?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Свойство bounds (CGRect) определяет внутреннюю систему координат UIView относительно её собственных границ.

Что хранится в bounds:

  • origin (обычно (0, 0)): Начало системы координат для всего внутреннего содержимого (subviews, drawing).
  • size: Внутренняя ширина и высота вью. Обычно совпадает с frame.size, если не применены трансформации (transform).

Отличие от frame: frame описывает положение и размер вью в системе координат её родителя (superview), а boundsв её собственной системе координат.

Пример и важный нюанс:

let view = UIView(frame: CGRect(x: 20, y: 20, width: 100, height: 100))
print(view.bounds) // (x: 0.0, y: 0.0, width: 100.0, height: 100.0)

// Сдвиг bounds.origin НЕ меняет положение вью на экране,
// но сдвигает её внутреннее содержимое (например, subviews).
view.bounds.origin = CGPoint(x: 10, y: 10)
// Теперь система координат для subviews начинается с точки (10,10) внутри view.

Основное применение: Изменение bounds.origin — это основа реализации скроллинга (как в UIScrollView).