为什么 NSAttributedString 的属性现在的类型为 [NSAttributedStringKey: Any],而 UITextView 的类型属性仍然是 [String: Any] 类型



我曾经能够生成NSAttributedString s并使用[String: Any]类型的相同属性字典(尤其是相同的键)来设置UITextViewtypingAttributes。从 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)

最新更新