Question Propriété UIView clipsToBounds: améliore-t-il les performances?


La documentation dit que le clipsToBounds propriété de UIView va couper le dessin aux limites, ou plus précisément que le subView ne peut pas tirer en dehors des limites de la superView.

Ça a l'air sympa, mais qu'est-ce que ça veut dire en pratique?

Si je mets ça à OUI, Alors mon subView ne dessine automatiquement que les parties qui ne sont pas hors des limites du superView. donc cela augmente la performance globale ou dois-je toujours m'assurer que je ne crée pas de vues qui ne sont pas visibles, c'est-à-dire dans un UIScrollView ?


16
2018-05-04 16:55


origine


Réponses:


Je pense que c'est le contraire: activer l'écrêtage nuit à la performance car il faut mettre en place un masque d'écrêtage. Je me rappelle vaguement avoir lu ceci quelque part, mais je ne peux pas le trouver maintenant.


23
2018-05-04 16:59



Le cas d'utilisation de clipsToBounds concerne davantage les sous-vues qui sont partiellement en dehors de la vue principale. Par exemple, j'ai une sous-vue (circulaire) sur le bord de son UIView parent (rectangulaire). Si vous définissez clipsToBounds sur YES, seule la moitié du cercle / sous-vue sera affichée. Si défini sur NON, le cercle entier apparaîtra. Je viens juste de rencontrer ce que je voulais partager.


1
2018-01-03 17:18



L'attaque (possible) des performances n'est déterministe que si vous connaissez la hiérarchie des vues. Comme mentionné ci-dessus, le moteur de rendu utilisera généralement des cycles GPU pour dessiner la vue SAUF que certaines vues de la hiérarchie soient utilisées. drawRect:. Cela n'affecte pas l'application OpenGL ES car drawRect:est omis dans ce type d'applications.

D'après ce que je comprends, déterminer et afficher la zone coupée peut nécessiter moins de cycles que le calcul, le dessin et la fusion de la vue entière. À partir de OpenGL ES 2.0 le découpage peut être calculé en GPU.


0
2017-11-09 00:18