2010-07-02 4 views
6

Je remarque que certaines des choses que je fais avec les images dans mon application, je pourrais faire avec les propriétés CALayer à la place (c'est-à-dire les bordures, les ombres, les dégradés, etc.). Donc, je me demande, en général, est-ce une meilleure idée d'utiliser CALayers et autres, ou tout simplement faire tout ça dans photoshop et utiliser UIImage (View) s pour tout ce dont j'ai besoin? Les performances de défilement ont été plutôt lentes avec les ombres portées et autres, donc j'essaie de trouver la moindre optimisation possible. Informations générales: Je suis simplement en train de faire défiler verticalement un tas d'images. Un peu comme l'application photos. C'est à partir de la version 3.2, j'ai donc accès à des choses comme les propriétés shadow et shouldRasterize dans CALayer.Performances de CALayer par rapport aux performances UIImageView

Répondre

15

Une chose importante à savoir à propos des ombres CALayer est qu'elles sont, par défaut, rendues à partir du canal alpha composite du calque; cela peut être très lent, en particulier lorsque le calque est en rotation ou change de taille. Vous devriez regarder dans la propriété shadowPath: si vous donnez à Core Animation une forme simple, comme un rectangle (UIBezierPath+bezierPathWithRect: avec la couche bounds vous donnera [via sa propriété CGPath] un CGPathRef que vous pouvez utiliser ici, vous verrez beaucoup meilleure performance.

shouldRasterize est également certainement utile, en particulier avec les vues qui ont de nombreuses sous-vues qui ne changent pas souvent; assurez-vous, cependant, que vous réglez rasterizationScale sur la couche [UIScreen mainScreen].scale, ou que vous obtiendrez une pixellisation désagréable sur des écrans haute résolution comme l'iPhone 4.

Questions connexes