带有样式绑定的NSTextView上的段落样式未更新

时间:2018-11-05 15:47:53

标签: cocoa nstextview

我有一个绑定到String的NSTextView。 NSTextView的isRichText设置为false。 文本可由用户编辑。

我想动态更新字体和行高。 随时可以使用textView.font设置字体。

对于绑定之前的行高,我似乎只能设置段落样式。之后,相同的代码对文本布局没有影响。

我正在使用以下代码:

let paragraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.lineHeightMultiple = style.lineHeightMultiple
editableText.defaultParagraphStyle = paragraphStyle

有人可以帮我解决我做错的事情吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

借助@Willeke和this question,我对此有了解决方案。如建议的那样,我必须为此去文本存储,并在整个文本范围内设置属性。但是,这确实感觉不对,因为我将NSTextView设置为纯文本,因此我认为应将其整体应用。

如果按如下所示设置属性,则会删除textView.font设置,因此必须以相同方式应用所有属性。

let paragraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
paragraphStyle.lineHeightMultiple = style.lineHeightMultiple

let storageRange = NSMakeRange(0, editableText.textStorage!.string.count)
editableText.textStorage!.setAttributes(
            [NSAttributedStringKey.paragraphStyle : paragraphStyle,
             NSAttributedStringKey.font : style.noteFont],
            range: storageRange)
相关问题