Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSTextView颜色和字体在清除后重置_Objective C_Cocoa_Nstextview - Fatal编程技术网

Objective c NSTextView颜色和字体在清除后重置

Objective c NSTextView颜色和字体在清除后重置,objective-c,cocoa,nstextview,Objective C,Cocoa,Nstextview,我在NSPanel中为NSTextView设置了一些默认字体和颜色 但是,当我用setString:@“清除视图时,不仅文本消失,而且所有默认颜色/字体格式也消失了 在我执行另一个setString之后,文本将再次变为默认字体和黑色 有人能解释一下原因吗?我能做些什么来补救 更新: 感谢您对这个问题的帮助和澄清。 在设置字符串后,我只是再次格式化它 [self.txtLog setFont:[NSFont fontWithName:@"courier" size:12]]; [self.txtL

我在NSPanel中为NSTextView设置了一些默认字体和颜色

但是,当我用
setString:@“
清除视图时,不仅文本消失,而且所有默认颜色/字体格式也消失了

在我执行另一个
setString
之后,文本将再次变为默认字体和黑色

有人能解释一下原因吗?我能做些什么来补救

更新:

感谢您对这个问题的帮助和澄清。 在设置字符串后,我只是再次格式化它

[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]];

这是因为清除NSTextView并设置常规(非属性化)字符串会删除格式,包括字体和颜色

大多数时候,我设置属性字符串,并使用HTML格式化。我觉得很方便。例如,下面是我用来设置颜色和字体的两个宏:

#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]
或使用NSTextView的insertText

[textView insertText:html2AttributedString(fontName(myNSString, @"Courier New"))];

使用HTML,您可以定义所有内容,包括居中和许多其他属性。但是,在转换文本之前,您必须将任何新行转换为

除非您仅在textView中设置文本的一部分,否则我建议使用textStorage方法——我在使用insertText时遇到了新字符串格式设置不正确的问题。
[textView insertText:html2AttributedString(fontName(myNSString, @"Courier New"))];