html - 我可以选择使用 Swift UITextView 呈现哪个 HTML 图像吗?
问题描述
我正在使用 UITextView 呈现从 Web API 下载的 HTML。我的挑战是,在不同尺寸的显示器存在多个图像文件的情况下,图像不会呈现。
示例:此图像确实呈现...
<figure data-align="right" data-img-src="https://uploads/original/image-02.jpg" data-ref-id="1300-627596" data-size="medium" data-ratio="1.2996254681648" data-width="267" data-embed-type="image" style="width: 267px">
<a class="fluid-height" style="padding-bottom:130.0%" href="https://uploads/original/image-02.jpg" data-ref-id="1300-627596">
<img alt="Praesent sed molestie lectus, sit amet dictum eros." src="https://uploads/original/image-02.jpg" srcset="https://uploads/original/image-02.jpg 267w" sizes="(max-width: 267px) 100vw, 267px" data-width="267"></a>
<figcaption style=font-weight:500;font-size:13;color:666666>Pic 2 Caption</figcaption>
但是这张图片没有渲染
<figure data-align="right" data-img-src="https://uploads/original/image-01.jpg" data-ref-id="1300-2086678" data-size="small" data-ratio="1.2257525083612" data-width="598" data-embed-type="image" style="width: 598px">
<a class="fluid-height" style="padding-bottom:122.6%" href="https://uploads/original/image-01.jpg" data-ref-id="1300-2086678">
<img alt="Praesent sed molestie lectus, sit amet dictum eros." src="https://uploads/scale_small/image-01.jpg" srcset="https://uploads/original/image-01.jpg 598w, https://uploads/scale_small/image-01.jpg.jpg 522w" sizes="(max-width: 522px) 100vw, 522px" data-width="522"></a>
<figcaption style=font-weight:500;font-size:13;color:666666>Pic 1 Caption</figcaption>
</figure>
我知道这与不同的图像文件名有关。有没有办法选择要使用的文件?或者,也许在标题标签中添加一些东西?
标题标签:
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head>
谢谢您的帮助
编辑:这就是我将数据加载到 UITextView 中的方式
let inputString = "<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><span style='font-family:-apple-system;font-size:17'>
<h2 style=font-weight:800;color:0282F8>Sample Heading</h2>
<p style=font-weight:300>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas congue posuere neque a pretium. Nullam viverra ex tortor, quis dictum urna pulvinar non. In tristique nisi libero, nec ornare orci consequat suscipit. Maecenas quis elit magna. Donec finibus semper nulla sit amet dignissim. Vestibulum consectetur ullamcorper justo. Ut tincidunt nisi ut porta ornare.</p>
<p style=font-weight:300>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas congue posuere neque a pretium. Nullam viverra ex tortor, quis dictum urna pulvinar non. In tristique nisi libero, nec ornare orci consequat suscipit. Maecenas quis elit magna. Donec finibus semper nulla sit amet dignissim. Vestibulum consectetur ullamcorper justo. Ut tincidunt nisi ut porta ornare.</p>
<h2 style=font-weight:800;color:0282F8>Sample Heading</h2>
<p style=font-weight:300>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas congue posuere neque a pretium. Nullam viverra ex tortor, quis dictum urna pulvinar non. In tristique nisi libero, nec ornare orci consequat suscipit. Maecenas quis elit magna. Donec finibus semper nulla sit amet dignissim. Vestibulum consectetur ullamcorper justo. Ut tincidunt nisi ut porta ornare.</p>
</span></body>"
func updateUIView(_ uiView: UITextView, context: UIViewRepresentableContext<HTMLView>) {
DispatchQueue.main.async {
let data = Data(self.inputString.utf8)
if let attributedString = try? NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil) {
uiView.isEditable = false
uiView.attributedText = attributedString
}
}
}
解决方案
推荐阅读
- php - 为什么在laravel中无法识别路线?
- python - 即使元素存在,Selenium find_element 也会抛出异常
- f# - 为什么绑定到同一个变量的函数的引用相等返回false?
- ios - iOS:Mac Catalyst,在其他 Mac 上测试 iOS 应用
- swift - 接受数值类型并将它们转换为双精度的 Swift 函数
- ruby-on-rails - 如何在 Ruby on Rails 中为动态模型添加动态属性
- android - Mapbox Android 中的可绘制资源
- css - 过渡后执行css
- excel - Excel 查询连接表
- json - WSO2 EI 从注册表中读取 json