Как работает clipsToBounds?
Я хотел бы знать, как использовать UIView свойства clipsToBounds.
в официальной документации говорится следующее:
clipsToBoundsсвойствалогическое значение, определяющее, ограничиваются ли вложенные представления границы представления.
Обсуждение
ЗначениеYESвызывает подвиды, которые будут обрезаны границы приемника. Если установлено значениеNO, подвиды, рамки которых расширяются за видимыми границами приемник не обрезается. Неисполнение значениеNO.
но я не совсем понимаю, что это значит. Как я должен использовать clipsToBounds? Каковы последствия установки этого свойства YES точно? Или к NO?
2 ответа:
если мой суперпанель это коробочка размером 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 показывает это, когда приложение действительно работает:
uiview и текстовое поле с тенью Swift 4
self.txtCurrent.layer.shadowOpacity = 0.5 self.txtCurrent.layer.shadowOffset = CGSize(width: 1.0, height: 1.0) self.txtCurrent.layer.shadowRadius = 5.0 self.txtCurrent.layer.shadowColor = UIColor.black.cgColor self.txtCurrent.layer.masksToBounds = falseuiview с тенью
self.yourview.layer.shadowOpacity = 0.5 self.yourview.layer.shadowOffset = CGSize(width: 1.0, height: 1.0) self.yourview.layer.shadowRadius = 5.0 self.yourview.layer.shadowColor = UIColor.black.cgColor self.yourview.layer.masksToBounds = false


