Pregunta

Al dibujar cadenas usando drawAtPoint :, drawInRect: e incluso configurando la propiedad de texto de UILabels, el texto a veces puede aparecer ligeramente borroso.

Tiendo a usar Helvetica en la mayoría de los lugares, y noto que tamaños de fuente específicos causan cierto nivel de desenfoque, tanto en el simulador como en el dispositivo.

Por ejemplo:

UIFont *labelFont = [UIFont fontWithName:@"Helvetica-Bold" size:12];

Causará que la etiqueta resultante tenga un texto ligeramente borroso.

UIFont *labelFont = [UIFont fontWithName:@"Helvetica-Bold" size:13];

Resultados en texto nítido.

Mi pregunta es ¿por qué ocurre esto? ¿Y es solo cuestión de seleccionar un tamaño de fuente óptimo para un tipo de letra? Si es así, ¿cuáles son los tamaños de fuente óptimos?

ACTUALIZACIÓN: Parece que quizás no sea el tamaño de la fuente lo que está causando la falta de definición. Puede ser que el centro del rectángulo sea un punto fraccionario. Aquí hay un comentario que encontré en los foros de desarrollo de Apple:

  

Verifique la posición. Es probable en un   píxel fraccional Cambiar centro para ser   valor entero.

Completé los valores de todos mis puntos, pero todavía hay lugares donde el texto permanece borroso. ¿Alguien ha encontrado este problema antes?

¿Fue útil?

Solución

He resuelto esto.

Solo asegúrese de que el punto o rect en el que está dibujando no ocurra en un píxel fraccional.

I.e. NSLog(@"%@", NSStringFromCGRect(theRect)) para determinar qué punto se está dibujando en un píxel fraccional. Luego llame al round() sobre ese punto.

Otros consejos

Es posible que desee mirar NSIntegralRect (), hace lo que quiere.

Disculpe mi ignorancia si esto es incorrecto, no sé nada sobre iPhone o Cocoa.

Si solicita que el texto se centre en el rectángulo, es posible que también deba asegurarse de que el ancho y / o la altura del rect sea un número par.

También he tenido este problema, pero mi solución es diferente y puede ayudar a alguien. Mi problema fue el desenfoque de texto después de cambiar el tamaño de un objeto UIView a través de TouchesBegan y CGAffineTransformMakeScale, luego de vuelta a CGAffineTransformIdentity en TouchesEnded.

Probé tanto el tamaño variable del texto como el redondeo de los puntos centrales xey, pero ninguno funcionó. La solución para mi problema fue usar tamaños pares para el ancho y alto de mi <=> !!

Espero que esto ayude ...

De mis experimentos, algunas fuentes no se muestran claramente en ciertos tamaños. p.ej. Helvetica-Bold no muestra & Quot;. & Quot; bien a las 16.0f, pero son claras a las 18.0f. (Si observa detenidamente, el píxel superior de & Quot;. & Quot; está borroso).

Después de notar eso, me ha molestado cada vez que veo esa UIView, ya que se muestra dinámicamente.

En mi caso, dibujé texto en un CALayer personalizado y resultó ser bastante borroso. Lo resolví estableciendo contentScale con el valor apropiado:

Objetivo-C:

layer.contentsScale = [UIScreen mainScreen].scale;

Swift:

layer.contentsScale = UIScreen.main.scale
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top