2011-04-04 13 views
6

Tengo un UIScrollView con zoomable con algunos CATextLayer sy simple CALayer s en él. Se vuelven bien prestados, pero el problema es que cuando se amplían se vuelven borrosos. (Incluso si los vuelvo a dibujar)Vector como dibujo para zoomable UIScrollView

¿Cuáles serían mis opciones para que mi texto no se vea borroso cuando se amplía la vista? ¿Debo usar otra cosa? habilitar algo en CATextLayer/CALayer? Cualquier idea es bienvenida;)

estoy usando CALayer s, ya que, como se sugiere en la documentación, CALayer s son más ligeros que UIViews y tengo cientos de ellos. Actualmente funciona sin problemas. Lo he intentado con UIWebView y mi versión CALayer es más rápida;)

Gracias de antemano.

Respuesta

16

iOS rasteriza el texto antes de que se produzca la ampliación, por eso es tan borroso. Solo necesita corregir una propiedad de su CATextLayer, contentsScale, para obtener un render de mayor calidad después de hacer zoom. Poner en práctica este método UIScrollViewDelegate:

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView 
         withView:(UIView *)view 
         atScale:(float)scale 
{ 
    [CATransaction begin]; 
    [CATransaction setValue:[NSNumber numberWithBool:YES] 
        forKey:kCATransactionDisableActions]; 
    uglyBlurryTextLayer.contentsScale = scale; 
    [CATransaction commit]; 
} 

Esto le dice a la capa de usar más píxeles para representar el texto, y se desactiva Core Animation al hacer que el cambio en particular.

+0

Lo siento por la aceptación tardía. Esto es lo que estaba buscando. ¡Simplemente genial! ;) – nacho4d

+0

Esto no funciona del todo; también cambia el tamaño del texto renderizado. A medida que acercas, el texto se hace más pequeño, a medida que alejas, se hace más grande (de modo que creo que se está utilizando la misma cantidad de píxeles en la pantalla, ¿no?). – Adam

+0

No estoy muy seguro de lo que quieres decir. – pe8ter

Cuestiones relacionadas