如何在 SwiftUI View 中插入 iframe?

mik*_*a88 5 webkit uiwebview webview swiftui

webView我想在新的 SwiftUI 框架内加载一个。我怎样才能做到这一点?

struct SubmissionFlowFrame: View {

    var body: some View {
        // I want to insert the iframe here
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

您可以UIView通过遵循UIViewRepresentable并实现所需的方法来使用任何方法,如下所示:

struct WebView: UIViewRepresentable {

    func makeUIView(context: Context) -> WKWebView {
        WKWebView(frame: .zero)
    }

    func updateUIView(_ view: WKWebView, context: UIViewRepresentableContext<WebView>) {

        let request = URLRequest(url: URL(string: "https://google.com")!)

        view.load(request)
    }
}
Run Code Online (Sandbox Code Playgroud)

然后像普通的 swiftUI 一样使用它,View如下所示:

struct ContentView : View {

    var body: some View {
        WebView()
    }
}
Run Code Online (Sandbox Code Playgroud)

并且不要忘记导入UIKit依赖项,例如本例:

import WebKit
Run Code Online (Sandbox Code Playgroud)


Ket*_*dra 0

嗯,目前没有直接的方法可用。

但你可以用UIViewRepresentable它来包裹视图。

像这样:

struct ContentView : UIViewRepresentable {

    func makeUIView(context: Context) -> WKWebView  {
        let webView = WKWebView()
        let request = URLRequest(url: URL(string: "https://www.apple.com")!)
        webView.load(request)
        return webView
    }

    func updateUIView(_ uiView: WKWebView, context: Context) { }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif
Run Code Online (Sandbox Code Playgroud)

别忘了import WebKit