Restablecimiento de color y fuente de NSTextView después de borrarlo
Frecuentes
Visto 1,385 equipos
3
Establecí una fuente y un color predeterminados en un NSTextView dentro de un NSPanel.
Sin embargo, cuando borro la vista con setString:@""
, no solo desaparece el texto, sino también todos los colores/fuentes predeterminados.
Después de hacer otro setString
, el texto se convierte en la fuente predeterminada y vuelve a ser negro.
¿Alguien puede explicar por qué es eso y qué puedo hacer para remediarlo?
ACTUALIZADO:
Gracias por la ayuda y la aclaración del problema. Terminé formateándolo nuevamente después de establecer String.
[self.txtLog setFont:[NSFont fontWithName:@"courier" size:12]];
[self.txtLog setTextColor:[NSColor colorWithSRGBRed:65.0/255 green:229.0/255 blue:235.0/255 alpha:1]];
1 Respuestas
4
Esto se debe a que borrar NSTextView y establecer una cadena normal (no atribuida) elimina el formato, que incluye la fuente y el color.
La mayoría de las veces, configuro cadenas atribuidas que formateo usando HTML. Me parece muy conveniente. Por ejemplo, aquí hay dos macros que uso para establecer el color y la fuente:
#define color(string, color) strAdd5(@"<font color=\"#",(color), @"\">", (string), @"</font>")
#define fontName(string, fontname) strAdd5(@"<span style=\"font-family: ",(fontname), @";\">", (string), @"</span>")
#define html2AttributedString(htmlString) [[[NSAttributedString alloc] initWithHTML:[(htmlString) dataUsingEncoding:NSUTF8StringEncoding]documentAttributes:NULL] autorelease]
Luego, todo lo que necesito es establecer la cadena atribuida en el almacenamiento de texto:
[textStorage setAttributedString:html2AttributedString(color(myNSString, @"FF0000"))]
o para usar insertText de NSTextView
[textView insertText:html2AttributedString(fontName(myNSString, @"Courier New"))];
Y utilizando HTML, puede definir todo, incluido el centrado y muchas otras propiedades. Pero debe convertir cualquier línea nueva en < BR / > antes de convertir el texto.
respondido 08 mar '13, 22:03
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas objective-c cocoa nstextview or haz tu propia pregunta.
A menos que solo esté configurando una parte del texto en textView, le recomiendo usar el método textStorage: me he encontrado con problemas al usar insertText donde el formato de la nueva cadena no se configuró correctamente. - steve