Swift 5.5 界面不显示AttributedString
Swift 5.5 AttributedString doesn't show in interface
这是制作属性字符串的 Swift 5.5 方法:
let s = "Hello"
var attrib = AttributedString(s)
if let range = attrib.range(of: "ell") {
attrib[range].foregroundColor = .red
self.label.attributedText = NSAttributedString(attrib)
}
问题是标签没有显示任何红色字符。事实上,我可以打印 self.label.attributedText
并且我可以看到红色属性甚至没有进入 NSAttributedString。怎么回事?
默认情况下,Swift 认为您正在应用 SwiftUI 属性,UIKit 无法理解这些属性。您必须指定属性字符串属性的种类:
attrib[range].uiKit.foregroundColor = .red
// ^^^^^
这是制作属性字符串的 Swift 5.5 方法:
let s = "Hello"
var attrib = AttributedString(s)
if let range = attrib.range(of: "ell") {
attrib[range].foregroundColor = .red
self.label.attributedText = NSAttributedString(attrib)
}
问题是标签没有显示任何红色字符。事实上,我可以打印 self.label.attributedText
并且我可以看到红色属性甚至没有进入 NSAttributedString。怎么回事?
默认情况下,Swift 认为您正在应用 SwiftUI 属性,UIKit 无法理解这些属性。您必须指定属性字符串属性的种类:
attrib[range].uiKit.foregroundColor = .red
// ^^^^^