Webview 如何在SwiftUI视图中插入iframe?
我想在新的SwiftUI框架中加载一个Webview 如何在SwiftUI视图中插入iframe?,webview,uiwebview,webkit,swiftui,Webview,Uiwebview,Webkit,Swiftui,我想在新的SwiftUI框架中加载一个webView。我该怎么做 struct SubmissionFlowFrame: View { var body: some View { // I want to insert the iframe here } } 目前还没有直接的方法 但是,您可以使用UIViewRepresentable来实现这一点,并使用它包装视图 像这样: struct ContentView : UIViewRepresentable {
webView
。我该怎么做
struct SubmissionFlowFrame: View {
var body: some View {
// I want to insert the iframe here
}
}
目前还没有直接的方法 但是,您可以使用
UIViewRepresentable
来实现这一点,并使用它包装视图
像这样:
struct ContentView : UIViewRepresentable {
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
let request = URLRequest(url: URL(string: "https://www.apple.com")!)
webView.load(request)
return webView
}
func updateUIView(_ uiView: WKWebView, context: Context) { }
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
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)
}
}
struct ContentView : View {
var body: some View {
WebView()
}
}
不要忘记导入WebKit您可以使用任何
UIView
,方法是遵循UIViewRepresentable
,并实现如下所需的方法:
struct ContentView : UIViewRepresentable {
func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
let request = URLRequest(url: URL(string: "https://www.apple.com")!)
webView.load(request)
return webView
}
func updateUIView(_ uiView: WKWebView, context: Context) { }
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
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)
}
}
struct ContentView : View {
var body: some View {
WebView()
}
}
不要忘记导入UIKit
依赖项,如本例所示:
import WebKit
导入快捷界面
导入WebKit
结构WebView:UIViewRepresentable{
func makeUIView(上下文:UIViewRepresentableContext)->WebView.UIViewType{
WKWebView(帧:.0)
}
func updateUIView(uiView:WKWebView,context:UIViewRepresentableContext){
let request=URLRequest(url:url(字符串):https://apple.com")!)
uiView.load(请求)
}
}
结构ContentView:View{
var body:一些观点{
WebView()
}
}
结构内容视图\u预览:PreviewProvider{
静态var预览:一些视图{
ContentView()
}
}
您可以使用UIViewRepresentable
将webView
包装在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)
}
}
使用
WebView
加载url请求,如:
WebView {
$0.load(URLRequest(url: .init(string: "https://google.com")!))
}
使用这个简单的结构
导入WebKit
结构WebView:ViewRepresentableHelper{
var configuration={(view:WKWebView)in}//除非它是本机SwiftUI视图
(我不相信它是),否则您需要(1)让它在UIKit
中工作(作为视图或视图控制器),并(2)使它“可关联”(如UIViewRelatable
或uiviewcontrollerrelateable
中所述。这里有一些问题和公认的答案,还有一些非常好的例子。祝你好运!