これは、NSTextView をクリアして通常の (属性のない) 文字列を設定すると、フォントと色を含む書式設定が削除されるためです。
ほとんどの場合、HTML を使用して書式設定した属性付き文字列を設定します。とても便利だと思います。たとえば、色とフォントを設定するために使用する 2 つのマクロを次に示します。
#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]
次に、属性付きの文字列をテキスト ストレージに設定するだけです。
[textStorage setAttributedString:html2AttributedString(color(myNSString, @"FF0000"))]
またはNSTextViewのinsertTextを使用する
[textView insertText:html2AttributedString(fontName(myNSString, @"Courier New"))];
また、HTML を使用すると、センタリングやその他の多くのプロパティを含むすべてを定義できます。ただし、テキストを変換する前に、改行を < BR / > に変換する必要があります。