ios - 如何使用 HTML 标签快速显示表格
问题描述
我从包含 html 标签的 API 获取文本。如何在 UILabel 中显示它?我尝试使用 NSAttributedString,但不是我需要的。
下面是我的回复
<div id="Details" class="a-section a-spacing-extra-large">
<div id="feature_div" class="feature" data-feature-name="Description" data-cel-widget="feature_div">
<div id="feature_div" class="a-row feature" data-feature-name="productDescription" data-template-name="productDescription" data-cel-widget="productDescription_feature_div">
<div id="productDescription" class="a-section a-spacing-small">
<p>Manual caulking guns have a thrust ratio; the higher the thrust ratio, the easier it is to dispense the caulk, sealant, or adhesive.</p>
<div></div>
</div>
</div>
</div>
</div>
<div id="p13n-m-desktop-dp-sims_session-similarities-sims-feature-4" class="celwidget" data-cel-widget="desktop-dp-sims_session-similarities-sims-feature-4">
<div class="a-section similarities-widget sims-carousel-holder" data-similarity-type="desktop-dp-sims_session-similarities"></div>
</div>)
"Hi"
Optional(<ul class="a-unordered-list a-vertical a-spacing-none">
<li><span class="a-list-item">dispesing rebaring</span></li>
<li><span class="a-list-item">Easy to handle</span></li>
<li><span class="a-list-item">frame caulking gun</span></li>
<li><span class="a-list-item">requires less force </span></li>
<li><span class="a-list-item">to help prevent dripping</span></li>
</ul>
<div>
<table id="product-specification-table" class="a-keyvalue">
<tbody>
<tr><th class="a-span4 a-text-right">Brand Name</th>
<td>ICFS359</td>
</tr>
<tr><th class="a-span4 a-text-right">Colour</th>
<td>Red</td>
</tr>
<tr><th class="a-span4 a-text-right">Included Components</th>
<td>IDispenser Caulking Gun</td>
</tr>
<tr><th class="a-span4 a-text-right">Material Type</th>
<td>Steel</td>
</tr>
<tr><th class="a-span4 a-text-right">Number of Items</th>
<td>1</td>
</tr>
<tr><th class="a-span4 a-text-right">Number</th>
<td>ICFSDM</td>
</tr>
<tr><th class="a-span4 a-text-right">Size</th>
<td>Standard</td>
</tr>
</tbody>
</table>
</div>)
我试过这个
extension String {
var htmlToAttributedString: NSAttributedString? {
guard let data = data(using: .utf8) else { return NSAttributedString() }
do {
return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil)
} catch {
return NSAttributedString()
}
}
var htmlToString: String {
return htmlToAttributedString?.string ?? ""
}
}
但我想以以下格式显示我的回复,
品牌名称 ICFS359
容量 10
请帮忙
解决方案
通过您提供的上述扩展,您可以使用 UILabel 假设您有一个包含响应 html 值的字符串,如下所示:
let htmlString = "<div id="Details">".htmlToAttributedString
label.attributedText = htmlString
或者因为我在该响应中看到了一个可选的,而不是强制展开它或强制转换为字符串:
if let htmlString = response["value"] {
label.attributedText = htmlString.htmlToAttributedString
}
这就是它的样子: https ://ibb.co/zFQLqmp 如果这就是你要找的东西
推荐阅读
- android - 创建片段为时已晚?
- c# - 让孩子和父母一起
- actions-on-google - 基于用户区域设置的主题自定义在 Google 控制台上的操作中
- google-drive-api - 从 Gdrive 下载文件时遇到问题:403 禁止错误
- c++ - 是否可以在他自己的方法中将一个对象取消引用到另一个对象?
- python - 使用 Union 类型设置默认值
- r - 如何在 rcpp 中导入向量?
- sql - 带时间条件的计数功能
- php - 带有“或”条件的 Laravel 验证
- c# - Fill complex object property List
based on string.split condition