Ios 导航视图下的SwiftUI WKWebView不接受显示模式
我创建了一个选项卡视图,其中第一个选项卡包含一个WKWebViewIos 导航视图下的SwiftUI WKWebView不接受显示模式,ios,swiftui,wkwebview,Ios,Swiftui,Wkwebview,我创建了一个选项卡视图,其中第一个选项卡包含一个WKWebView struct WebView : UIViewRepresentable { let urlString : String func makeUIView(context: Context) -> WKWebView { return WKWebView() } func updateUIView(_ uiView: WKWebView, context: Context
struct WebView : UIViewRepresentable {
let urlString : String
func makeUIView(context: Context) -> WKWebView {
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
uiView.load(URLRequest.init(url: URL.init(string: urlString)!))
}
}
webview的使用方式如下:
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
NavigationView {
WebView(urlString: "...")
.navigationBarTitle("Intérieur", displayMode: .large)
}
.tabItem {
VStack {
Image(systemName:"...")
.foregroundColor(Color("brownGrey"))
Text("...")
.foregroundColor(Color("brownGrey"))
}
}.tag(0)
但无论我尝试什么,我都无法强制NavigationView
保持displayMode:.large
导航栏变为小模式,直到我滚动webview的内容,然后变为大
如果我在上面的代码中用一个简单的文本(“…”)
替换webview,它将按预期工作。在webview上方插入文本(“…”
)也可以,但我希望在不引入人工间隔的情况下这样做
以下是启动应用程序时发生的情况:
当webview的内容正在加载时,标题正常显示:
加载内容后,NavigationView将缩小其大小:
如果我下拉webview并放开,NavigationView将显示我希望它显示的方式:
在我看来,系统在导航栏下方检测到它是一个WKWebview
,并因此调整其行为,这是一种神奇的现象
有什么解决方案吗?在
VStack
中添加WebView
以及ZStack
(带显式边框)和具有纯色效果的颜色
var body: some View {
TabView(selection: $selection){
NavigationView {
VStack {
ZStack {
Color(.gray)
}.frame(width: 1, height: 1, alignment: .center)
WebView(urlString: "https://prettyitgirl.blogspot.com/")
}.navigationBarTitle("PrettyItGirl.com", displayMode: .large)
}
...
不提供明确的框架将为您提供自动调整大小的ZStack
所以基本上你只是想强迫大标题?是的。至少在用户开始滚动网页之前,请看我的答案,Joris。