Si mon superview est une boîte mesurant 10 unités de chaque côté et que ma sous-vue a une largeur de 20 unités, avec clipsToBounds
défini sur YES
, je ne verrai que la partie de la sous-vue qui s'inscrit dans les limites de la supervision. Sinon, si clipsToBounds
est défini sur NO
, je verrai la sous-vue entière, même les parties en dehors de la supervision (en supposant que nous soyons toujours à l'écran).
À titre d'exemple visuel, considérez les vues suivantes configurées sur le storyboard:
Ceci est un blanc UIView
, une étiquette dans le coin supérieur gauche avec un simple "1" ou "2" afin que je puisse en discuter comme view1
ou view2
. De plus, la vue noire est de la même taille que la vue blanche, mais son origine se trouve au centre de la vue blanche.
Dans la viewDidLoad
méthode du contrôleur de vue , nous avons le code suivant:
Objectif c:
- (void)viewDidLoad {
[super viewDidLoad];
self.view1.clipsToBounds = YES;
self.view2.clipsToBounds = NO;
}
Rapide:
override func viewDidLoad() {
super.viewDidLoad()
self.view1.clipsToBounds = true
self.view2.clipsToBounds = false
}
Lorsque nous exécutons le code et regardons dans le simulateur ou sur l'appareil, nous obtenons les résultats suivants:
Ainsi, bien que ces vues soient configurées de manière identique (sauf clipsToBounds
), elles semblent différentes. C'est ce que clipsToBounds
fait. Le YES
définir sur NO
fournira le résultat le plus élevé, tandis que le paramètre sur fournira le résultat du bas.
Si nous débogage la hiérarchie des vues, nous pouvons voir plus clairement que les boîtes noires s'étendent toutes les deux au-delà des frontières de la vue blanche, mais seule la vue 2 le montre lorsque l'application est en cours d'exécution:
UITextView
ombres ne sont pas visibles, si laclipsToBounds
propriété est égale àtrue
; ? Si c'estfalse
, fonctionne très bienCeci est censé être une réponse rapide succincte par rapport à la réponse acceptée
Si Apple a été de renommer cette propriété, je le nomme:
clipSubviewsToBounds
.Je viens de rencontrer un bogue dans notre code. Où la hauteur de la vue parent a été définie
0
. Nous nous attendions à ne voir aucun de ses éléments. Pourtant, le contenu de la vue parent apparaissait.C'était parce que ce
clipToBounds
n'était pas prévutrue
. Une fois que cela est défini,true
les hauteurs des sous-vues ne peuvent pas s'étendre au-delà0
, elles ne s'affichent donc pas du tout.la source