2011-04-14 4 views
7

J'utilise un AQGridView pour afficher mes données dans une grille sur iPad. Chaque cellule est une sous-classe UIView et, typiquement, il y a 18 cellules affichées simultanément.UIView: Coins arrondis sans problèmes de performances

Je souhaite ajouter un coin rond à ces cellules, donc je règle la propriété cornerRadius des couches pertinentes (c'est-à-dire la couche du UIView principal et d'une sous-vue). Cependant, cela entraîne des problèmes de performance et le défilement n'est plus lisse. Lorsque vous utilisez d'autres propriétés CALayer, telles que shadowOpacity, cela ne se produit pas.

Existe-t-il d'autres façons d'ajouter un coin arrondi (en dehors de l'utilisation d'une image)? Ou est-ce que je fais quelque chose de mal?

Répondre

27

J'ai également constaté une baisse importante des performances lors de l'utilisation de cornerRadius sur la couche d'une vue contenant une sous-vue UIImageView. La rastérisation a résolu ce problème: view.layer.shouldRasterize = YES;

+2

vous m'a littéralement sauvé des tonnes de mon temps! :) –

+0

Je l'ai déjà utilisé avec beaucoup de succès. Cependant, arrondir les angles sur l'ensemble de la vue entraîne une certaine dégradation de la qualité de l'ensemble de la vue: https://skitch.com/franklinwebber/8q8c2/ios-simulator – burtlo

+18

Cependant, j'ai trouvé que le problème était que la pixellisation était effectuée trop bas d'une résolution et cela a résolu le problème 'myView.layer.rasterizationScale = [[UIScreen mainScreen] échelle];' – burtlo

0

Cela peut être l'endroit où vous placez l'appel setCornerRadius. Assurez-vous que c'est quelque part qui ne reçoit qu'une seule fois, pas, par exemple, dans une méthode drawRect.

+0

C'est dans la méthode 'init', donc je suppose que ce n'est pas un problème. – fabian789

+1

semble être un problème commun, voir http://stackoverflow.com/questions/4735623/uilabel-layer-cornerradius-negatively-impacting-performance – picciano

+0

Je vois. Je vais créer une image alors. Pourriez-vous transformer votre commentaire en une réponse pour que je puisse l'accepter? – fabian789