SwiftUI 简单的使用WebView

直接上代码


import SwiftUI
import WebKit

//不通过参数直接构建视图
struct MyWebView: UIViewRepresentable {
    func makeUIView(context: Context) -> WKWebView {
        return WKWebView()
    }
    func updateUIView(_ uiView: WKWebView, context: Context) {
        let url = URL(string: "https://www.baidu.com/")!
        uiView.load(URLRequest(url: url))
    }
}
//通过【UIViewRepresentable】从WebKit中引入【WKWebView】创建能够在SwiftUI中使用的视图
struct WebView: UIViewRepresentable {
    let webView: WKWebView
    func makeUIView(context: Context) -> WKWebView{
        return webView
    }
    func updateUIView(_ uiView: WKWebView, context: Context) { }
}
//通过参数构建视图
class WebViewModel: ObservableObject {
    let webView: WKWebView
    let url: URL
    init() {
        webView = WKWebView(frame: .zero)
        url = URL(string: "https://cn.bing.com/")!
        webView.load(URLRequest(url: url))
    }
}

struct HowToLoadWebView: View {
    @ObservedObject var webViewModel = WebViewModel()
    @State var isSwitchView = false
    var body: some View {
        NavigationView{
            Group{
                if isSwitchView {
                    WebView(webView: webViewModel.webView)
                } else {
                    MyWebView()
                }
            }
            .navigationBarItems(trailing: Button(action: {
                self.isSwitchView.toggle()
            }, label: {
                Text("切换")
            }))
            .navigationBarTitle("", displayMode: .inline)
        }
    }
}

struct HowToLoadWebView_Previews: PreviewProvider {
    static var previews: some View {
        HowToLoadWebView()
    }
}

参考:
Create a web browser with WebKit and SwiftUI