len*_*nny 11 transition ios swiftui
如何在 SwiftUI 中拥有一个覆盖视图,并在不同部分具有不同的过渡?例如,在我的具体示例中,我想实现以下目标:
我已经尝试过各种各样的事情,看来我必须在包装条件的视图上设置动画和过渡if showOverlay
。但是,看起来覆盖层子视图上设置的所有.transition()
和修饰符都被忽略了。.animation()
实际上可能吗?以下代码是我认为应该可以工作但显然根本不起作用的代码:
// any observable external variable, that enables / disables the overlay
@State showOverlay: bool = false
// surrounding view
VStack { /* .. */ }
.frame(maxWidth: .infinity, maxHeight: .infinity)
.overlay(
Group {
if showOverlay {
Overlay()
}
}
)
// overlay view
struct Overlay: View {
var body: some View {
VStack {
// style 1
Text("OverlayContent that slides in from bottom")
.transition(.move(edge: .bottom).combined(with: .opacity))
.animation(.easeInOut(duration: 0.28))
// style 2
Text("OverlayContent that appears instant")
.animation(nil)
}
.background( // style 3
Color.black.opacity(0.2)
.ignoresSafeArea()
.transition(.opacity) // <-- background should not slide up but fade in
)
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
876 次 |
最近记录: |