swift 如何使用2个视图制作3D旋转动画?

wn9m85ua  于 2022-11-21  发布在  Swift
关注(0)|答案(1)|浏览(219)

我有两个观点:一个图像和一个填充图像的形状。一旦我翻转了形状,图像就应该显示出来。

struct DogCard: View {
    @State var animationAmount = 0.0
    @State var isFaceUp: Bool = false
    
    var card: MemoryGame.Card
    var body: some View {
        ZStack{
            let shape = RoundedRectangle(cornerRadius: 10)
            if card.isFaceUp {
                shape.stroke(lineWidth: 3).foregroundColor(.blue)
                Image(card.content).resizable().scaledToFit().padding()
                
            }
            else {
                shape.fill().foregroundColor(.blue)
            }
            
        }
        .rotation3DEffect(.degrees(animationAmount), axis: (x: 0, y: 1, z: 0))
        .onTapGesture {
            withAnimation {
                animationAmount += 180
                isFaceUp.toggle()
            }
        }
    }
}

x1c 0d1x我试图让图像显示出来,一旦形状被点击,并使翻转。
^当你点击形状时,形状会翻转(不显示图像-错误)

zujrkrfu

zujrkrfu1#

withAnimation中,使用card.isFaceUp.toggle()而不是isFaceUp.toggle()。请尝试以下操作:

@State var card: MemoryGame.Card  // <-- here, @Binding if need be
    // ....

    .onTapGesture {
        withAnimation {
            animationAmount += 180
            card.isFaceUp.toggle()   // <-- here
        }
    }

你的代码没有得到一个图像的原因是因为你的if card.isFaceUp {...}不是基于你的var isFaceUp,它是基于card.isFaceUp

相关问题