2012-02-16 8 views
5

Tengo algunas bonitas UIView personalizadas que utilizan CALayers para algunas máscaras y transparencias bastante elaboradas. Me tomó un tiempo encontrar la manera de hacerlo funcionar sin problemas, pero descubrí que al envolver los objetos relevantes en un contenedor UIView, y al configurar el layer.should del contenedor a YES, pero dejaba esa propiedad de todas las vistas contenidas establecidas a NO , se mantendrá suave como la mantequilla sin importar cuán elaborada pueda ser tu mezcla.CALayer pierde rasterización cuando se desplaza fuera de la pantalla en UIScrollView

Se trata básicamente de la siguiente manera:

UIScrollView


de contenedores Ver (layer.shouldRasterize = SÍ)

  • niño (layer.shouldRasterize = NO)
    • childOfChild (layer.shouldRasterize = NO)
  • niño (layer.shouldRasterize = NO)
  • niño (layer.shouldRasterize = NO)

de contenedores ...

de contenedores ... (y así sucesivamente)


Básicamente, el contenedor termina como una gran imagen de bloque cuando se rasteriza, lo que minimiza la cantidad de rasterización que se tiene que hacer. Sin embargo, esto me ha creado un nuevo problema. Si tengo varios contenedores en UIScrollView, tan pronto como uno de los contenedores se desplaza fuera de la pantalla, se etiqueta "Rojo" en el generador de perfiles de CoreAnimation y, por lo tanto, se debe volver a representar cuando se vuelva a desplazar por la pantalla. Esto causa un breve tartamudeo. No entiendo por qué la capa del contenedor tiene que rasterizar de nuevo. ¿Alguien puede explicar esto o tal vez proporcionar una solución alternativa? Gracias.

Respuesta

Cuestiones relacionadas