繁体   English   中英

UITableViewCell中的UILabel将每个willDisplayCell上的字体大小加倍

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM