gpt4 book ai didi

swift - 为什么在 SwiftUI 中的过渡结束后应用了 edgeIgnoringSafeArea 修饰符?

转载 作者:行者123 更新时间:2023-12-04 11:01:49 26 4
gpt4 key购买 nike

我想用不透明度过渡覆盖 UIScreen。这是我的观点:

struct ContentView: View {
@State private var overlayUIScreen: Bool = false

var body: some View {
ZStack {
if overlayUIScreen {
Rectangle()
.edgesIgnoringSafeArea(.top)
.frame(width: UIScreen.main.bounds.size.width,
height: UIScreen.main.bounds.size.height)
.foregroundColor(Color.gray)

.transition(.opacity)
}

Button("Overlay?") {
withAnimation {
self.overlayUIScreen.toggle()
}
}

}
}
}

出于某种原因,安全区域在过渡完成后会改变颜色。
为什么会发生这种情况,我该怎么做才能解决此问题?

最佳答案

另一种解决方案是移动框架以修改 ZStack而不是 Rectangle

struct ContentView: View {
@State private var overlayUIScreen: Bool = false

var body: some View {
ZStack {
if overlayUIScreen {
Rectangle()
.edgesIgnoringSafeArea(.top)
.foregroundColor(Color.gray)
.transition(.opacity)
}

Button("Overlay?") {
withAnimation {
self.overlayUIScreen.toggle()
}
}
}
.frame(width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
}
}

关于swift - 为什么在 SwiftUI 中的过渡结束后应用了 edgeIgnoringSafeArea 修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58760885/

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