我试图使用属性字符串在 UILabel 上加载一个简单的 html 字符串(有一个表),如果语言是英语,它适用于 rtl 布局格式不起作用,但它适用于 WKWebView,这里是样本
let testStr = "<html dir = \"RTL\"> <table border=\"1\" width =
\"514.0\" ><tr><td>عمود 1</td><td>عمود 2</td><td>عمود 3</td><td>عمود
4</td><td>عمود 5</td></tr><tr><td>صف 1</td><td><br></td><td><br></td> .
<td><br></td><td><br></td></tr><tr><td>صف 2</td><td><br></td><td><br> .
</td><td><br></td><td><br></td></tr></table></html>"
testLbl.attributedText =
testStr.toHtmlAttributedText()
extension String{
func toHtmlAttributedText() -> NSAttributedString? {
guard let data = self.data(using: String.Encoding.utf8,
allowLossyConversion: true) else { return nil }
let options: [NSAttributedString.DocumentReadingOptionKey : Any] = [
NSAttributedString.DocumentReadingOptionKey.characterEncoding : String.Encoding.utf8.rawValue,
NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html,
]
let htmlString = try? NSMutableAttributedString(data: data, options: options, documentAttributes: nil)
//this to have borders in html table
htmlString?.addAttribute(NSAttributedString.Key.backgroundColor, value: UIColor.clear, range: NSMakeRange(0, 1))
return htmlString
}
}
这是它在模拟器和 html 编辑器上的外观