Вопрос:
Я хотел бы знать, как использовать свойство UIView clipsToBounds.
В официальной документации говорится следующее:
clipsToBounds свойство
Логическое значение, определяющее, ограничиваются ли подзоны границы представления.
Обсуждение
Установка этого значения в значение YES приводит к обрезанию субвью границ приемника. Если установлено значение NO, субсведы, чьи рамки расширяются за пределами видимых границ приемника не обрезаются. По умолчанию значение NO.
Но я не понимаю, что именно это означает. Как использовать clipsToBounds? Каковы последствия установки этого свойства в YES точно? Или NO?
Лучший ответ:
Если мой супервизор – это ящик размером 10 единиц с каждой стороны, а мой субвью – 20 единиц, при clipsToBounds установленном на YES, я увижу только часть подсмотра, которая соответствует границам надзор. В противном случае, если для параметра clipsToBounds установлено значение NO, я увижу все подвью, даже части вне супервизора (предположим, что мы все еще на экране).
В качестве наглядного примера рассмотрим следующие представления, созданные на раскадровке:
Это белый UIView, ярлык в верхнем левом углу с простым “1” или “2”, чтобы я мог обсуждать их как view1 или view2. Кроме того, черный вид имеет тот же размер, что и белый вид, но его начало находится в центре белого обзора.
В методе контроллера просмотра viewDidLoad у нас есть следующий код:
Objective-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 показывает это, когда приложение действительно работает: