Как работает 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 = false
uiview с тенью
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