Ios 创建自定义NSAttributedString.Key

Ios 创建自定义NSAttributedString.Key,ios,swift,Ios,Swift,我正在尝试构建一个简单的便笺应用程序。目前,我的重点是设置不同文本样式(如正文、标题、粗体、斜体等)的文本的可能性。我使用NSAttributedString设置不同的文本样式。现在,我想检测已应用于所选文本的样式 我认为这样做的一个好方法是创建一个自定义NSAttributedString。键,这样我可以在设置属性时分配它(例如.textStyle:“headline”,并在需要检测时读取它。我尝试将其作为NSAttributedString.Key的扩展实现,但没有成功。正确的方法是什么?

我正在尝试构建一个简单的便笺应用程序。目前,我的重点是设置不同文本样式(如正文、标题、粗体、斜体等)的文本的可能性。我使用
NSAttributedString
设置不同的文本样式。现在,我想检测已应用于所选文本的样式

我认为这样做的一个好方法是创建一个自定义NSAttributedString。,这样我可以在设置属性时分配它(例如
.textStyle:“headline”
,并在需要检测时读取它。我尝试将其作为NSAttributedString.Key的扩展实现,但没有成功。正确的方法是什么?
有更好的选择吗?

您只需创建一个TextStyle枚举,并将您的案例设置为“正文、标题、粗体、斜体等”(如果需要,您可以为它们指定任何值)。然后您只需创建一个新的NSAttributedString键:




操场测试

let attributedString = NSMutableAttributedString(string: "Hello Playground")

attributedString.setAttributes([.textStyle: TextStyle.headline], range: NSRange(location: 0, length: 5))

attributedString.enumerateAttributes(in: NSRange(location: 0, length: attributedString.length), options: []) { attributes, range, stop in
    print(attributes, range, stop )
    print(attributedString.attributedSubstring(from: range))
}

谢谢。我怎样才能让它以我想要的样式显示在
NSTextView
中?例如,
bold
以粗体和蓝色显示,
italic
以红色和斜体显示,等等?我们可以不向
NSMutableAttributedString
添加字体属性,而只对
NSTextView
执行一些操作吗?
extension NSAttributedString.Key {
    static let textStyle: NSAttributedString.Key = .init("textStyle")
}
let attributedString = NSMutableAttributedString(string: "Hello Playground")

attributedString.setAttributes([.textStyle: TextStyle.headline], range: NSRange(location: 0, length: 5))

attributedString.enumerateAttributes(in: NSRange(location: 0, length: attributedString.length), options: []) { attributes, range, stop in
    print(attributes, range, stop )
    print(attributedString.attributedSubstring(from: range))
}