gpt4 book ai didi

ios - NavigationView 下的 SwiftUI WKWebView 不接受 displayMode

转载 作者:行者123 更新时间:2023-12-01 16:20:40 25 4
gpt4 key购买 nike

我创建了一个选项卡 View ,其中第一个选项卡包含一个 WKWebView

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 的内容,然后它变大。

如果我在上面的代码中用一个简单的 Text("...") 替换 webview它按预期工作。插入 Text("...")上面的 webview 也可以,但我想在不引入人工垫片的情况下做到这一点。

这是启动应用程序时发生的情况:

标题正常显示,而 webview 的内容正在加载:
pre webview load

加载内容后, NavigationView 会减小其大小:
enter image description here

如果我拉下 webview 并放开 NavigationView 显示我希望它显示的方式:
enter image description here

在我看来,系统检测到它是 WKWebview 的地方似乎发生了一些神奇的事情。在导航栏下方,因此会调整其行为。

有什么解决办法吗?

最佳答案

添加 WebViewVStack连同 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 .

enter image description here

关于ios - NavigationView 下的 SwiftUI WKWebView 不接受 displayMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60765911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com