Ответ
Свойство 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).