SwiftUI TabView亮度视图垂直位置



我试图在SwiftUI中改变TabView的亮度,但是每当亮度切换时,子视图改变它们的垂直位置。这对我来说是非常神秘的,因为亮度对视图的位置有任何影响似乎很奇怪。

如果你一直在看我过去的几个问题,你可能会意识到我想改变亮度,因为我想在新视图滑动时(按下按钮)使背景视图变暗。这就是为什么,在示例代码中,我们必须包含Z-Stack。

示例代码:

struct ContentView: View {
@State var press: Bool = Bool()

var body: some View {
ZStack {
TabView {
NavigationView {
Button(action: { press.toggle() }) {
Text("Toggle")
}
}
.tabItem {
Image(systemName: "square.stack").font(.title)
Text("View One")
}

NavigationView {
Button(action: { press.toggle() }) {
Text("Toggle")
}
}
.tabItem {
Image(systemName: "checkmark.square")
Text("View Two")
}
}
.brightness(press ? -0.1: 0)
}
}
}

问题在于TabView内部的多个NavigationViews,您实际上应该在视图层次结构的根处只有1个NavigationView。使用多个NavigationViews气馁,会导致意想不到的结果,就像这样。因此,body的内部应该是:

NavigationView {
ZStack {
TabView {
Button(action: { press.toggle() }) {
Text("Toggle")
}
.tabItem {
Image(systemName: "square.stack")
Text("View One")
}

Button(action: { press.toggle() }) {
Text("Toggle")
}
.tabItem {
Image(systemName: "checkmark.square")
Text("View Two")
}
}
.brightness(press ? -0.1: 0)
}
}

相关内容

  • 没有找到相关文章