我曾经能够生成NSAttributedString
s并使用[String: Any]
类型的相同属性字典(尤其是相同的键)来设置UITextView
的typingAttributes
。从 iOS 11 开始,我不得不将[String: Any]
属性更改为[NSAttributedStringKey: Any]
属性以生成 NSAttributedString
s,但UITextView
仍然保留为 [String: Any]
类型。为什么?
不知道为什么它不是[NSAttributedStringKey: Any]
,但尽管如此,你可以这样转换它
func ConvertToTypingAttributes(_ attr: [NSAttributedStringKey: Any]) -> [String: Any] {
var result = [String: Any]()
for (k,v) in attr {
result[k.rawValue] = v
}
return result
}
用法:
var txtView = UITextView()
let p: [NSAttributedStringKey: Any] = [NSAttributedStringKey.backgroundColor: UIColor.green]
txtView.typingAttributes = ConvertToTypingAttributes(p)