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))
}