【问题标题】:How interpret HTML in IOS app using swift如何使用 swift 在 IOS 应用程序中解释 HTML
【发布时间】:2016-01-29 15:45:31
【问题描述】:

我正在尝试实现我的第一个 iphone 应用程序,但我有点卡住了。我有 API 作为 JSON 的响应项之一返回 HTML 内容(标签 like p, img, em, a 等)。

在 IOS 上解释 HTML 内容的最佳方式是什么?我基本上找到了两种可能的解决方案:

1) UIWebView

我已经尝试过了,所有内容都可以轻松加载。但不确定它是否是好方法?我猜每次用户打开此视图时,所有图像 (<img src="">) 都是从 Internet 加载的(我无法控制下载和缓存图像?)?也不确定如何在 webView 中设置元素样式?

2) UILabel / UITextView

我也试过这个,我可以轻松删除所有 html 标签,但我不知道如何设置最初包装在 html 标签中的文本?我想我会手动解析完整的 html 并渲染它?

我会很高兴收到每条建议,因为我不确定继续下去的正确方法是什么。

谢谢。

【问题讨论】:

    标签: html ios swift uiwebview uilabel


    【解决方案1】:

    查找 Swift 中的字符串操作。这是管理 Web 内容的一种非常基本的方式,但它会给您很大的控制权。但是我真的不建议使用返回 html 响应的 API,因为“解析”它将非常消耗资源(CPU、RAM)。尝试使用 JSON 响应的 API。另外,如果你想缓存。查一下kingfisher框架,真的很高效!

    【讨论】:

    • 感谢您的回答。我是否正确理解我应该用一些样式更改 html 字符串而不是在 webView 中显示它?我实际上使用的是翠鸟,但我现在确定如何在 html 字符串中的图像上使用它?我有 JSON 响应,但其中一个 json 响应项是 html 内容(对不起,我写得不好)。
    • 你可以做的是在 html 响应中。对于每个标签,查看它是什么(img、p、div..)并寻找它的结束标签。现在您知道标签的类型和内容了。然后将其发送到适当的函数进行渲染。例如,如果它是一个图像,则将其发送到一个函数,该函数将其放入 UIVIEW 并执行所有必要的调整大小。但请注意,这需要一些时间才能发生。所以请确保异步执行以保持应用响应:)
    • 我希望有更简单的东西。感谢您的建议。
    【解决方案2】:

    经过一番研究,我认为正确的方法是使用UIWebView。因为UILabel 只能解释基本的HTML 标记,而我会变得更复杂的HTML 代码,比如youtube 嵌入等。

    您可以使用UIWebView 的方法loadHTMLString 轻松加载HTML 字符串。

    HTML 内容可以使用本地 css 设置样式。您可以使用以下方式获取本地 css 文件的路径:

    NSBundle.mainBundle().URLForResource("myCssFile", withExtension: "css")
    

    如果你有 css 的本地路径,你可以像往常一样将它添加到 html 标题中。

    如果有人知道如何做到这一点的更好方法,我仍然会很高兴有任何想法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多