我在表格单元格中有一个UILabel
,我在界面生成器中设置了它的字体。现在,当单元格被显示时,我将HTML字符串和它转换为NSAttributedString
,我使用该标签的字体类型和大小,并将其用作该HTML文本的默认字体。UITableViewCell中的UILabel将每个willDisplayCell的字体大小加倍
问题在于,每当单元格被重新使用时,其标签的字体就会增加一倍,例如开始在17点,然后是34,68到数百万...
我从来没有设置任何东西到标签的字体属性,为什么它可以改变?
这是我的字符串扩展格式化成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)
你可以添加'cellForRowAtIndexPath'代码吗? – Priyal
@Priyal我只是增加了更多的信息和'willDisplay'方法的核心 – shelll