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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值