Se la mia superview è un riquadro che misura 10 unità su ciascun lato e la mia sottoview è larga 20 unità, con clipsToBoundsimpostato 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 view1o view2. Inoltre, la vista nera ha le stesse dimensioni della vista bianca, ma la sua origine è al centro della vista bianca.
Nel viewDidLoadmetodo 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 clipsToBoundsfa. Impostandolo su YESfornirà il risultato migliore, mentre impostandolo su NOfornirà 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:

UITextViewombre non sono visibili, se laclipsToBoundsproprietà è uguale atrue; ? Se lo èfalse, funziona bene