我在表格单元格中有一个UILabel
,我在界面构建器中设置了它的字体。现在,当显示单元格时,我将使用HTML字符串并将其转换为NSAttributedString
,其中我使用标签的字体类型和大小,并将其用作该HTML文本的默认字体。
问题在于,每次重复使用单元格时,其标签的字体数量会翻倍,例如:从17点开始,然后是34点,68点到数百万点......
我从未在标签的font属性中设置任何内容,为什么它可能会改变?
这是我的String扩展,用于将其格式化为NSAttributeString:
public func getHtml2AttributedString(font: UIFont) -> NSAttributedString? {
let modifiedString = "<style>body{font-family: '\(font.fontName)'; font-size:\(font.pointSize)px; margin:0; padding:0;}</style>\(self)";
guard let data = modifiedString.data(using: .utf8) else {
return nil
}
do {
return try NSAttributedString(data: data,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue],
documentAttributes: nil)
}
catch {
print(error)
return nil
}
}
修改 刚刚发现字体并不总是它的大小加倍,但它可以将它放大几个点。并且还可以改变重量,例如从正常到大胆。
cellForRowAt
方法只是将一个单元格出列并将其返回,willDisplay
方法执行类似这样的操作(Tt经历了几层抽象,但这是唯一触及UI元素的代码。只有一个标签,仅此而已):
label.attributedText = htmlString?.getHtml2AttributedString(font: label.font)
答案 0 :(得分:0)
最后,这是UILabel
的“功能”,在设置attributedText属性后,它会根据attributedText的属性自动更改其字体属性。更多信息可以在another SO question中找到。