SwiftUI ZIndex动画未发生

时间:2020-07-16 19:21:16

标签: swiftui

我有以下代码:

 @State private var couponId: Int = 0
    
    var body: some View {
        
        ScrollView {
            
            VStack(spacing: -50) {
                
                ForEach(1...20, id: \.self) { index in
                    CouponCell()
                        .zIndex(couponId == index ? 2 : 0)
                       .animation(.spring())
                        .onTapGesture {
                            withAnimation {
                                couponId = index
                            }
                        }
                }
            }
            
            .padding().frame(maxWidth: .infinity, maxHeight: .infinity)

用户选择一个特定的CouponCell,然后更新Zindex,使其出现在其他单元格的顶部。这可以工作,但是完全没有动画。我想念的是什么,为什么动画没有出现。

我正在macOS Big Sur Beta 2上使用Xcode 12 Beta 2

1 个答案:

答案 0 :(得分:0)

.zIndex本身不是可设置动画的修改器,因为实际上在视图z位置上没有要进行动画处理的值-它在下方或上方。

您可能是说(或希望)类似以下内容的组合

经过复制代码(Xcode 12)的测试

demo

CouponCell()
    .zIndex(couponId == index ? 2 : 0)
    .scaleEffect(couponId == index ? 1.02 : 1)
    .animation(.spring(), value: couponId)
    .onTapGesture {
        couponId = index
    }