我在表格單元格中有一個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