[英]UILabel in UITableViewCell is doubling font size on every willDisplayCell
我在表格单元格中有一个UILabel
,我已经在界面生成器中设置了它的字体。 现在,当显示单元格时,我将HTML字符串和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)
最后,这是UILabel
的“功能”,即在设置了attributedText属性后,它会根据attributedText的属性自动更改其字体属性。 在另一个SO问题中可以找到更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.