Что делает свойство clipsToBounds в UIKit?

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

Ответ

clipsToBounds — свойство UIView, контролирующее обрезку дочерних вью (subviews) по границам родительской вью.

Поведение

  • clipsToBounds = true — части дочерних вью, выходящие за границы родителя, не отображаются
  • clipsToBounds = false (по умолчанию) — дочерние вью отображаются полностью, даже за пределами родителя

Пример

let container = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
container.backgroundColor = .blue

let subview = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
subview.backgroundColor = .red

container.addSubview(subview)

// Без обрезки
container.clipsToBounds = false
// Красный квадрат полностью виден (100×100)

// С обрезкой
container.clipsToBounds = true
// Видна только часть красного квадрата (50×50 в правом нижнем углу синего)

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

  1. Круглые элементы (аватарки, кнопки)

    avatarView.layer.cornerRadius = 25
    avatarView.clipsToBounds = true // Изображение обрежется по круглой форме
  2. Кастомные контейнеры с чёткими границами

  3. Анимации, где часть вью должна быть скрыта

  4. Маски слоёв (работает в сочетании с layer.mask)

Важно: clipsToBounds влияет только на отрисовку. Дочерние вью всё ещё получают touch events, даже если их видимая часть обрезана.