私はUILabel
を表のセルに入れました。私はインターフェイスビルダーでそのフォントを設定しました。セルが表示されたら、私はHTML文字列をとり、NSAttributedString
に変換します。ここでラベルのフォントタイプとサイズを使用し、そのHTMLテキストのデフォルトフォントとして使用します。UITableViewCellのUILabelは、すべてのwillDisplayCellでフォントサイズを2倍にしています
問題は、セルが再利用されるたびに、ラベルのフォントがそのサイズを2倍にすることです。 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
}
}
EDIT: ただ、フォントは常にそのサイズを倍にしませんが、それはほんの数ポイントでそれを拡大できることを発見しました。また、体重を変更することもできます。ノーマルからボールドに。
cellForRowAt
メソッドは、セルをデキューして返します。willDisplay
メソッドは、このような処理を行います(Ttはいくつかの抽象レイヤーを通過しますが、これはUIエレメントに触れる唯一のコードです。 ):最後に
label.attributedText = htmlString?.getHtml2AttributedString(font: label.font)
'cellForRowAtIndexPath'コードを追加できますか? – Priyal
@Priyal私は、より多くの情報と 'willDisplay'メソッドの中核を追加しました – shelll