我的NSMutableAttributedString
中有两种NSTextView
种文字样式。一种是字体样式,另一种是上标,使用下面显示的NSBaselineOffsetAttributeName
:
aVerseNumberMutableString = NSMutableAttributedString(string: verseNumber.description,
attributes: [NSBaselineOffsetAttributeName:NSNumber(double: 6.0), NSFontAttributeName:NSFont(name: "Georgia", size: 12.0)!])
它们完美运行,直到我在NSTextView
中选择文字,然后触发NSTextView
以使用NSPopUpButton
更改其文字。然后上标字体样式恢复为其他文本的样式。以下是所有代码行。
// Get the verse number and then add attributes
aVerseNumberMutableString = NSMutableAttributedString(string: verseNumber.description,
attributes: [NSBaselineOffsetAttributeName:NSNumber(double: 6.0), NSFontAttributeName:NSFont(name: "Georgia", size: 12.0)!])
// Get the verse and then add attributes
aVerseMutableString = NSMutableAttributedString(string: " " + book.verseText + " ", attributes: [NSFontAttributeName:NSFont(name: "Georgia", size: 20.0)!])
// Prepend the verse number to the verse
theContent.appendAttributedString(aVerseNumberMutableString)
theContent.appendAttributedString(aVerseMutableString)
我可以看到这可能是怎么发生的,因为我将这两个字符串附加在一起,但为什么只有当我选择文本然后触发内容在NSTextView
中更改时才会发生这种情况?
答案 0 :(得分:1)
问题不在于创建属性字符串。这是我用NSTextView
填充内容的方式。我正在使用
contentTextView.textStorage!.mutableString.setString("")
然后使用
填写它 contentTextView.insertText(getChapterText("1"))
我应该使用NSTextStorage
来完成所有操作。所以现在我用一行代码而不是两行代码。
contentTextView.textStorage!.setAttributedString(getChapterText("1"))
现在选择文本,甚至只是在文本视图中单击,都不会像以前那样改变文本的样式。