如何在SwiftUI视图中插入iframe?

时间:2019-07-16 11:20:06

标签: webview uiwebview webkit swiftui

我想在新的SwiftUI框架中加载webView。我该怎么办?

struct SubmissionFlowFrame: View {

    var body: some View {
        // I want to insert the iframe here
    }
}

4 个答案:

答案 0 :(得分:1)

您可以通过遵守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)
    }
}

,然后像正常的swiftUI View这样使用它:

struct ContentView : View {

    var body: some View {
        WebView()
    }
}

也不要忘记像这种情况那样导入UIKit依赖项:

import WebKit

答案 1 :(得分:1)

grade

答案 2 :(得分:0)

好吧,目前尚无直接方法。

但是您可以为此使用UIViewRepresentable并用它包装视图。

像这样:

struct ContentView : UIViewRepresentable {

    func makeUIView(context: Context) -> WKWebView  {
        return WKWebView()
    }

    func updateUIView(_ uiView: WKWebView, context: Context) {
        uiView.load(URLRequest(url: URL(string: "https://www.apple.com")!))
    }
}

#if DEBUG
struct ContentView_Previews : PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
#endif

别忘了import WebKit

答案 3 :(得分:0)

您可以使用webViewUIViewRepresentable包裹在SwiftUI中。

import SwiftUI
import WebKit

struct ContentView: View {
  var body: some View {
    WebView()
  }
}

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