В UIKit, когда следует использовать свойство `bounds` у UIView?

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

Ответ

Свойство bounds описывает прямоугольник view в ее собственной системе координат (origin обычно (0, 0)). Его используют для операций "внутри" view.

Типичные случаи использования bounds:

  1. Рисование и расположение subviews: Все subviews позиционируются относительно bounds.origin своего супервью.
    // Добавить subview в левый верхний угол родителя
    subview.frame.origin = parentView.bounds.origin
  2. Сдвиг внутреннего содержимого (например, в UIScrollView):
    scrollView.bounds.origin.y = contentOffset // Сдвигает видимую область
  3. Обработка касаний: Проверка, попадает ли точка в границы view.
    let isInside = view.bounds.contains(touchPoint)
  4. Работа с трансформациями (transform): bounds остается неизменным при применении трансформации (например, вращении), в то время как frame может стать невалидным.

Главное отличие от frame: frame определяет положение и размер view в системе координат ее родителя и зависит от bounds, center и transform.