En mi aplicación, intento renderizar texto a lo largo de una ruta; esto está bien para la mayoría de los personajes pero no para el japonés (o cualquier cosa que no sea romaní). Me han aconsejado que use [NSString drawAtPoint] que muestra los caracteres correctos en mi CATiledLayer; sin embargo, desaparecen después de aproximadamente 5 segundos. En este momento, puedo ampliar la capa y se escalan correctamente, pero no parecen comprometerse con CATiledLayer, como suele ser el resto del texto.Usando el método drawAtPoint de NSString en lugar de los problemas de CGContextShowGlyphsAtPoint
Antes de renderizar, compruebo la cadena y decido si alguno de ellos no se podrá render. Si voy a tener problemas, yo uso drawAtpoint lugar:
if (!isFullyDisplayable)
{
CGContextShowGlyphsAtPoint(context, pt.x, pt.y, realGlyph, 1);
}
else {
// fall back on less flexible font rendering for difficult characters
NSString *b = [gv text];
NSString *c = [b substringWithRange:NSMakeRange(j,1)];
[c drawAtPoint:pt withFont:[UIFont fontWithName:@"Helvetica-Bold" size:16.0]];
}
¿Alguien tiene alguna punteros de por qué el texto desaparece?
Tan pronto como el drawAtPoint se utiliza mi salida de depuración es floodeado con:
<Error>: CGContextGetShouldSmoothFonts: invalid context
<Error>: CGContextSetFont: invalid context
<Error>: CGContextSetTextMatrix: invalid context
<Error>: CGContextSetFontSize: invalid context
<Error>: CGContextSetTextPosition: invalid context
<Error>: CGContextShowGlyphsWithAdvances: invalid context
así que supongo que es algo que ver con mi gestión de contexto, pero asumí que si este se encuentra en la misma lugar cuando uso CGContextShowGlyphsAtPoint ya debería tener el contexto correcto?
Debería mencionar que esto solo funciona en iOS 4.0 y posterior. Las extensiones gráficas de UIKit no son seguras para subprocesos en FW anteriores. – Split