ios - NavigationView 下的 SwiftUI WKWebView 不接受 displayMode
问题描述
我创建了一个选项卡视图,其中第一个选项卡包含一个 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 的内容,然后它变大。
如果我在上面的代码中用一个简单的 webview 替换Text("...")
它,它会按预期工作。插入Text("...")
上面的 webview 也可以,但我想在不引入人工垫片的情况下这样做。
这是启动应用程序时发生的情况:
如果我拉下 webview 并放开 NavigationView 显示我希望它显示的方式:
在我看来,系统检测到它WKWebview
位于导航栏下方并因此调整其行为的地方发生了一些神奇的事情。
有什么解决办法吗?
解决方案
将WebView
与(带有显式框架)和具有纯色作品的颜色VStack
一起添加。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
.
推荐阅读
- python - 您如何在 django 中成功获取您想要的任何对象的 id?
- python - Tensorflow 不使用 tf.distribute.MirroredStrategy() 检测多个 CPU 内核
- docker - Behat 容器不断退出
- aws-api-gateway - 在 API Gateway 速度映射模板中将 JSON 转换为 JSONL
- python - 如何在 Seaborn 的配对图中绘制右轴和上轴并删除左轴和下轴?
- python - python plotly - 堆叠+分组条形图
- swift - 如何以编程方式将 COLLADA(.dae) 文件更改为 SceneKit(.scn) 文件 Swift
- react-native - React native flatlist - 区分发送和接收的消息
- django - DRF:如何在解析期间为 UnsupportedMediaType 异常定义自定义错误消息
- c - libmosquitto 未正确重新连接