2010-07-02 21 views
6

Me doy cuenta de que algunas de las cosas que hago con imágenes en mi aplicación, podría estar haciendo con propiedades CALayer en su lugar (es decir, bordes, sombras, degradados, etc.). Entonces, me pregunto, en general, ¿es una mejor idea usar CALayers y demás, o simplemente hacer todas esas cosas en Photoshop y usar UIImage (View) s para lo que sea que necesite? El rendimiento del desplazamiento ha sido un poco lento con sombras paralelas y otras cosas, así que básicamente estoy tratando de encontrar cada pequeña optimización que pueda.CALayer performance vs. UIImageView performance

Información básica: Básicamente me desplazo verticalmente por un grupo de imágenes. Algo así como la aplicación de fotos. Esto es todo desde 3.2 en adelante, así que tengo acceso a cosas como las propiedades shadow y shouldRasterize en CALayer.

Respuesta

15

Una cosa clave a saber sobre las sombras de CALayer es que, por defecto, se representan desde el canal alfa compuesto de la capa; eso puede ser realmente lento, particularmente cuando la capa está girando o cambiando de tamaño. Debería mirar en la propiedad shadowPath: si le da a Core Animation una forma simple, como un rectángulo (UIBezierPath+bezierPathWithRect: con la capa bounds le dará [a través de su propiedad CGPath] que puede usar allí), verá mucho mejor interpretación.

shouldRasterize también es definitivamente útil, especialmente con vistas que tienen muchas subvistas que no cambian con frecuencia; asegúrese, sin embargo, de establecer el rasterizationScale de la capa en [UIScreen mainScreen].scale, o obtendrá una desagradable pixelación en pantallas de alta resolución como las del iPhone 4.