gpt4 book ai didi

html - Swift HTML 编码的 attributeText 被截断

转载 作者:行者123 更新时间:2023-11-30 12:39:02 24 4
gpt4 key购买 nike

我有一个通过 JSON 传入的 HTML 字符串(在 REST 调用中),并且该 HTML 需要在 UILabel 中显示。

以下是我正在使用的代码-

let htmlText = info.shortDescription

if !(htmlText!.isEmpty) {

var fontAdded: String?

fontAdded = NSString(format: "<html><body><table><tr><td><span style=\"font-family: Lato; font-size: 14; margin: 0; padding: 0;\">%@</span></td></tr></table><br><br><br><br><br></body></html>", htmlText!) as String

if let htmlData = fontAdded!.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true) {
do {
headerView.bodyLabel.attributedText = try NSAttributedString(data: htmlData, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],documentAttributes: nil)

} catch let e as NSError {
print("Couldn't translate \(htmlText): \(e.localizedDescription) ")
headerView.bodyLabel.text = info.shortDescription
}
}
}

else {
headerView.bodyLabel.text = info.shortDescription
}

所以,每当我收到 HTML 字符串时,例如如果它包含粗体/斜体标签,则 UILabel 将显示具有 HTML 字符串中应用的任何样式的文本。

问题:-HTML 字符串中的最后几行被截断。请注意,不存在阻止 UI 显示整个文本的约束。致我的fontAdded ,如果我添加更多数量的 <br>标签,那么整个文本都是可见的,并且不存在截断问题。但 HTML 字符串可以是任意大小并且可以随时更改。我不想通过添加 ** <br> 对其进行硬编码**s

我还使用过NSUTF8StringEncoding而不是NSUnicodeStringEncoding但结果没有什么区别。此外,当我使用 NSUTF8StringEncoding 时,我收到的特殊字符无法正常工作。 .

有人可以帮忙解决这个问题吗?

最佳答案

您也许可以设置属性字符串的段落样式:

let psSpace = NSMutableParagraphStyle()
psSpace.lineBreakMode = NSLineBreakMode.byWordWrapping

NSAttributedString(data: htmlData,
options: [[NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], psSpace],
documentAttributes: nil)

就像Swift 3一样

关于html - Swift HTML 编码的 attributeText 被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42479317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com