[英]Make all background UI blur after a view pop up
我计划有一个弹出视图,在它显示后模糊它背后的所有底层 UI,但是我的背景“RoundedRectangle(cornerRadius:20).background(Color.white.opacity(0.7))”没有显示透明的白色或者像我计划的那样模糊。
var body: some View {
ZStack() {
NavigationStack {
ZStack() {
MyBackGround()
VStack() {
TextField("username", text: $user)
.padding()
.background(.brown)
SecureField("password", text: $pw)
.padding()
.background(.brown)
Button("CONFIRM") {
popUp.toggle()
}
.padding()
.cornerRadius(20)
.padding()
}
}
}
if popUp {
RoundedRectangle(cornerRadius: 20)
.background(
Color.white.opacity(0.7)
)
MyPopUP()
}
}
}
我建议使用提供的 SwiftUI .blur()
代替此上下文。
在NavigationStack之后添加这行代码。
NavigationStack{...}
.blur(radius: popUp ? 10 : 0)
if popUp {
MyPopUP()
}
您的弹出背景是黑色的,因为默认情况下RoundedRectangle
填充黑色,所以我们需要用该颜色填充它而不是添加背景修饰符。
NavigationStack {
// content ...
}
.blur(radius: popUp ? 5 : 0) // to blur (constant is up to you)
.disabled(popUp) // bluring does not prevent interaction
if popUp {
// if semi-transparent background is still needed
RoundedRectangle(cornerRadius: 20)
.foregroundColor(Color.white.opacity(0.7)) // << here !!
MyPopUP()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.