我试图在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)
}
}