테이블 셀에 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