wake-up-neo.com

Wie funktionieren clipsToBounds?

Ich würde gerne wissen, wie man die UIView-Eigenschaft clipsToBounds verwendet.

In der offiziellen Dokumentation heißt es:

clipsToBoundsproperty

Ein boolescher Wert, der bestimmt, ob Unteransichten auf die .__ beschränkt sind. Grenzen der Sicht.

Diskussion
Wenn Sie diesen Wert auf YES setzen, werden Subviews auf die .__-Datei gekürzt. Grenzen des Empfängers. Wenn NO eingestellt ist, werden Subviews, deren Frames .__ erweitern. jenseits der sichtbaren Grenzen des Empfängers werden nicht abgeschnitten. Der Standard Wert ist NO.

Ich bin mir jedoch nicht klar, was das genau bedeutet. Wie soll ich clipsToBounds verwenden? Welche Konsequenzen hat das Festlegen dieser Eigenschaft auf YES genau? Oder zu NO?

92
Tosh

Wenn es sich bei meinem Superview um eine Box handelt, die auf jeder Seite 10 Einheiten misst und meine Subansicht 20 Units breit ist, wobei clipsToBounds auf YES gesetzt ist, sehe ich nur den Teil der Subansicht, der in die Grenzen des Superview passt. Wenn ansonsten clipsToBounds auf NO gesetzt ist, sehe ich die gesamte Unteransicht, sogar die Teile außerhalb des Superviews (vorausgesetzt, wir sind immer noch auf dem Bildschirm).

Betrachten Sie als visuelles Beispiel die folgenden Ansichten, die im Storyboard eingerichtet sind:

enter image description here

Dies ist ein weißer UIView, eine Beschriftung in der oberen linken Ecke mit entweder einer einfachen "1" oder "2", sodass ich diese als view1 oder view2 besprechen kann. Außerdem hat die schwarze Ansicht dieselbe Größe wie die weiße Ansicht, aber Origin befindet sich in der Mitte der weißen Ansicht.

In der viewDidLoad-Methode des Ansichtscontrollers haben wir den folgenden Code:

Ziel c:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view1.clipsToBounds = YES;
    self.view2.clipsToBounds = NO;
}

Schnell:

override func viewDidLoad() {
    super.viewDidLoad()
    self.view1.clipsToBounds = true
    self.view2.clipsToBounds = false
}

Wenn wir den Code ausführen und im Simulator oder auf dem Gerät betrachten, erhalten wir die folgenden Ergebnisse:

enter image description here

Obwohl diese Ansichten identisch eingerichtet sind (außer clipsToBounds), sehen sie anders aus. Dies ist was clipsToBounds tut. Wenn Sie es auf YES setzen, wird das oberste Ergebnis angezeigt, und auf NO wird das unterste Ergebnis gesetzt.

Wenn wir die Ansichtshierarchie debuggen, können wir deutlicher erkennen, dass sich die schwarzen Kästchen tatsächlich über die Grenzen der weißen Ansicht hinaus erstrecken, aber nur Ansicht 2 zeigt dies, wenn die App tatsächlich ausgeführt wird:

enter image description here

243
nhgrif

uiview und Textfeld mit Schatten 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

blick mit Schatten

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
0
Shakeel Ahmed