Retina display core graphics quality font

Tratando de entender por qué obtengo un dibujo de baja calidad con CGContextShowTextAtPoint? Vea la image adjunta: img

La letra "W" se dibuja usando CGContextShowTextAtPoint en un CALayer y se ve muy pixelada. El button al lado es un button estándar y tiene una alta resolución como se esperaba. Me gustaría get el dibujo del text para ser de alta resolución.

introduzca la descripción de la imagen aquí

De forma pnetworkingeterminada, su CALayer no muestra su contenido de cuarzo en la resolución más alta de la pantalla de visualización de Retina. Puede habilitar este código de uso como el siguiente:

if ([layer respondsToSelector:@selector(setContentsScale:)]) { layer.contentsScale = [[UIScreen mainScreen] scale]; } 

Esto afectará no solo a la representación de text, sino a todo el dibujo de Cuarzo dentro de CALayers, por lo que necesitarás hacer esto para todas tus capas con contenido de cuarzo personalizado.

¿El uso de CGContextScaleCTM proporciona resultados para usted? Cuando trabaje con un context de charts, algo como esto:

 CGFloat scale = [[UIScreen mainScreen] scale]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextScaleCTM(context, scale, scale); 

Un grupo de funciones controla cómo Core Graphics procesa las fonts:

  • CGContextSetAllowsAntialiasing
  • CGContextSetAllowsFontSmoothing
  • CGContextSetAllowsFontSubpixelPositioning
  • CGContextSetAllowsFontSubpixelQuantization

Versión Swift:

 textLayer.contentsScale = UIScreen.mainScreen().scale 

introduzca la descripción de la imagen aquí