Если мой супервизор представляет собой блок размером 10 единиц с каждой стороны, а мой подпредставление имеет ширину 20 единиц с clipsToBoundsустановленным значением YES, я увижу только ту часть подпредставления, которая вписывается в границы супервизора. В противном случае, если clipsToBoundsустановлено значение NO, я увижу все подпредставление, даже части вне супервизора (при условии, что мы все еще на экране).
В качестве наглядного примера рассмотрим следующие представления, установленные на раскадровке:

Это белая UIViewметка в верхнем левом углу с простой цифрой «1» или «2», чтобы я мог обсуждать их как view1или view2. Кроме того, черный вид имеет тот же размер, что и белый, но его исходная точка находится в центре белого вида.
В viewDidLoadметоде контроллера представления у нас есть следующий код:
Цель-C:
- (void)viewDidLoad {
[super viewDidLoad];
self.view1.clipsToBounds = YES;
self.view2.clipsToBounds = NO;
}
Swift:
override func viewDidLoad() {
super.viewDidLoad()
self.view1.clipsToBounds = true
self.view2.clipsToBounds = false
}
Когда мы запускаем код и смотрим на симулятор или на устройство, мы получаем следующие результаты:

Таким образом, несмотря на идентичную настройку этих представлений (за исключением clipsToBounds), они выглядят по-разному. Вот что clipsToBoundsделает. Установка этого значения YESобеспечит лучший результат, а установка значения NO- нижний результат.
Если мы отлаживаем иерархию представлений, мы можем более четко увидеть, что оба черных ящика действительно выходят за границы белого представления, но только представление 2 показывает это, когда приложение действительно работает:

UITextViewне видны тени, еслиclipsToBoundsсвойство равноtrue; ? Если это такfalse, отлично работает