Этот вопрос проверяет понимание работы свойства clipsToBounds в iOS UIKit и его влияния на отображение дочерних представлений.
В iOS фреймворке UIKit каждый UIView имеет два ключевых прямоугольника: frame и bounds. Frame определяет положение и размер view в системе координат его супервью (родителя). Bounds определяет внутреннюю систему координат самого view (часто с началом в точке (0,0)) и его видимую область для собственного содержимого.
Свойство clipsToBounds контролирует, применяется ли прямоугольник bounds в качестве "маски отсечения" (clipping mask) для всех его дочерних представлений. Когда значение равно false (по умолчанию), система отрисовки игнорирует границы bounds при рисовании subviews. Они могут быть нарисованы полностью, даже если их части находятся за пределами родительского прямоугольника. Когда значение равно true, система применяет отсечение: любая часть subview, находящаяся за пределами прямоугольника bounds родителя, становится невидимой и не отрисовывается.
Рассмотрим ситуацию, когда у вас есть view с фоновым цветом и дочерняя view, которая больше родителя и частично выходит за его границы.
let containerView = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
containerView.backgroundColor = .blue
let childView = UIView(frame: CGRect(x: -20, y: -20, width: 140, height: 140))
childView.backgroundColor = .red
containerView.addSubview(childView)
// По умолчанию clipsToBounds = false
// Красный квадрат будет виден полностью, включая части за синими границами.
containerView.clipsToBounds = true
// Теперь видна только та часть красного квадрата, которая попадает в прямоугольник bounds (100x100) синего view.
// Углы красного квадрата за пределами синего будут обрезаны.clipsToBounds = true вместе с layer.cornerRadius. Иначе содержимое будет видно в углах за пределами скруглённой маски.Итог: Используйте clipsToBounds = true, когда вам необходимо визуально ограничить содержимое view его видимыми границами, например, для создания аккуратных скруглённых контейнеров или управления видимой областью вложенных элементов. Оставляйте значение false, если вам нужны эффекты, выходящие за рамки (например, тени, свечение), или когда производительность приоритетнее точного отсечения.