import SwiftUI
import WebKit
// swiftui 자체 웹뷰가 아직 없기 때문에 UIView representable 상속 받아 만들기
struct MyWebView: UIViewRepresentable {
let request : URLRequest
// 웹뷰
private var webView: WKWebView?
//
init(request: URLRequest) {
self.webView = WKWebView()
self.request = request
}
func makeUIView(context: Context) -> WKWebView {
return webView!
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(request)
}
// 뒤로가기
func goBack(){
webView?.goBack()
}
// 앞으로
func goForward(){
webView?.goForward()
}
// 새로고침
func refresh() {
webView?.reload()
}
// 원래 request url로 이동
func goHome() {
webView?.load(request)
}
}
struct ContentView: View {
let webView = MyWebView(request: URLRequest(url: URL(string: "https://www.naver.com")!))
var body: some View {
VStack {
webView
HStack{
Spacer()
Button(action: {
self.webView.goBack()
}, label: {
Image(systemName: "arrowtriangle.left.fill")
.font(.title)
.foregroundColor(.blue)
.padding()
})
Spacer()
Button(action: {
self.webView.goHome()
}, label: {
Image(systemName: "house.fill")
.font(.title)
.foregroundColor(.blue)
.padding()
})
Spacer()
Button(action: {
self.webView.refresh()
}, label: {
Image(systemName: "arrow.clockwise.circle.fill")
.font(.title)
.foregroundColor(.blue)
.padding()
})
Spacer()
Button(action: {
self.webView.goForward()
}, label: {
Image(systemName: "arrowtriangle.right.fill")
.font(.title)
.foregroundColor(.blue)
.padding()
})
Spacer()
} // HStack
}//VStack
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Last active
September 3, 2021 07:10
-
-
Save TuenTuenna/b59b502e2c319770f2ec476ff55b1957 to your computer and use it in GitHub Desktop.
ios_swiftui_webview_control_snippet
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment