Created
October 27, 2020 17:43
-
-
Save xgqfrms/71a6f7471b79905fb53147b23805d382 to your computer and use it in GitHub Desktop.
SwiftUI & WKWebView
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// SwiftUI_WKWebView.swift | |
// webview-app | |
// | |
// Created by 夏凌晨 on 2020/10/28. | |
// Copyright © 2020 webgeeker. All rights reserved. | |
// | |
import SwiftUI | |
//import Foundation | |
import WebKit | |
struct SwiftUI_WKWebView: UIViewRepresentable { | |
var url: String; | |
func makeUIView(context: Context) -> WKWebView { | |
guard let url = URL(string: self.url) else { | |
return WKWebView(); | |
} | |
let request = URLRequest(url: url); | |
let webview = WKWebView(); | |
webview.load(request); | |
return webview; | |
} | |
func updateUIView(_ uiView: WKWebView, context: Context) { | |
// | |
} | |
} |
//
// SwiftUI_WKWebView.swift
// webview-app
//
// Created by 夏凌晨 on 2020/10/28.
// Copyright © 2020 webgeeker. All rights reserved.
//
import SwiftUI
//import Foundation
import WebKit
struct SwiftUI_WKWebView: UIViewRepresentable {
var url: String
func makeUIView(context: Context) -> WKWebView {
guard let url = URL(string: self.url) else {
return WKWebView()
}
let request = URLRequest(url: url)
let webview = WKWebView()
webview.load(request)
return webview
}
func updateUIView(_ uiView: WKWebView, context: Context) {
//
}
}
// Previews 入口 ✅
struct SwiftUI_WKWebView_Previews: PreviewProvider {
static var previews: some View {
// 👍 联网的 URL, Canvas 必须开启 live preview, 动态的请求内容
SwiftUI_WKWebView(url: "https://cdn.xgqfrms.xyz")
.edgesIgnoringSafeArea(Edge.Set.top)
}
}
/*
// SwiftUI_WKWebView(url: "https://cdn.xgqfrms.xyz");
❌ no need ;
CompileDylibError: Failed to build ContentView.swift
Compiling failed: ';' statements are not allowed
*/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
UIViewRepresentable
makeUIView & updateUIView
UIViewRepresentable 协议具有两个需要添加的要求:
创建 ???View 的 makeUIView(context:)方法
和
配置视图并响应所有更改的 updateUIView(_:context :)方法。