2017-02-07 39 views
0

我在表格单元格中有一个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) 
+0

你可以添加'cellForRowAtIndexPath'代码吗? – Priyal

+0

@Priyal我只是增加了更多的信息和'willDisplay'方法的核心 – shelll

回答

0

这到底是UILabel的“功能”,即设置attributedText属性后,它自动的基础上,attributedText的属性改变其字体属性。更多可以在another SO question找到。

相关问题