SwiftUI TabView 亮度视图垂直位置
SwiftUI TabView brightness views vertical location
我试图在 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)
}
}
我试图在 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)
}
}