SwiftUI WebView集成与使用

SwiftUI 的网页加载组件其实挺绕的,尤其一开始你会发现,它压根就没内建的 WebView。嗯?那咋整?好在有不少第三方库能搞定,比如SDWebImageSwiftUI,它虽然主打图片,但也顺手了个还挺好用的WebView组件。

WebView 的基本用法简单,你只要传个URL进去,它就能帮你把网页嵌进 SwiftUI 界面里,响应也快,效果还不错。你用CocoaPods或者SPM装一下库,马上就能跑。

像这样:

WebView(url: URL(string: "https://www.example.com")!)

要是你有本地的HTML字符串,也能直接塞进去:

WebView(html: "

Hello, SwiftUI WebView!

")

想和网页交互?可以的。只要你敢写JavaScript,就能通过evaluateJavaScript注入脚本,像抓网页标题、监听按钮点击都不在话下。

比如下面这个,点进去还能拿到页面标题:

webView.evaluateJavaScript("document.title") { (result, error) in
  if let title = result as? String {
    self.result = title
  }
}

了,安全问题你得注意,比如别随便加载 HTTP 的链接,最好搞清楚Info.plist里的 ATS 设置。不然上线 App Store 的时候,被卡住。

如果你还想深挖,比如搞个 JSBridge 或者加点交互动画,可以看看Webview JSBridge相关的资料。嗯,SwiftUI 的 WebView 虽然不是原生的,但折腾起来其实还蛮有意思。

如果你项目中有展示网页内容的需求,又不想跳出 SwiftUI 的语法糖世界,那这个方案还是蛮香的。记得按需加载 WebView,资源消耗也能控制得住。

zip 文件大小:55.78KB