Se la mia superview è un riquadro che misura 10 unità su ciascun lato e la mia sottoview è larga 20 unità, con clipsToBounds
impostato su YES
, vedrò solo la parte della sottoview che rientra nei limiti della superview. Altrimenti, se clipsToBounds
è impostato su NO
, vedrò l'intera sottoview, anche le parti al di fuori della superview (supponendo che siamo ancora sullo schermo).
Come esempio visivo, considera le seguenti visualizzazioni impostate nello storyboard:
Questo è un bianco UIView
, un'etichetta nell'angolo in alto a sinistra con un semplice "1" o "2" in modo che io possa discuterne come view1
o view2
. Inoltre, la vista nera ha le stesse dimensioni della vista bianca, ma la sua origine è al centro della vista bianca.
Nel viewDidLoad
metodo del controller di visualizzazione , abbiamo il seguente codice:
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
}
Quando eseguiamo il codice e lo guardiamo nel simulatore o sul dispositivo, otteniamo i seguenti risultati:
Quindi, nonostante queste visualizzazioni siano impostate in modo identico (tranne clipsToBounds
), hanno un aspetto diverso. Questo è ciò che clipsToBounds
fa. Impostandolo su YES
fornirà il risultato migliore, mentre impostandolo su NO
fornirà il risultato inferiore.
Se eseguiamo il debug della gerarchia della vista, possiamo vedere più chiaramente che le caselle nere si estendono entrambe oltre i bordi della vista bianca, ma solo la vista 2 mostra questo quando l'app è effettivamente in esecuzione:
UITextView
ombre non sono visibili, se laclipsToBounds
proprietà è uguale atrue
; ? Se lo èfalse
, funziona bene