2

我一直在玩 SwiftUI 及其动画。下面是我在带有 scaleEffect 动画的 navigationView 内的圆圈代码

@State private var isAnimating = false

NavigationView{
VStack{
        ZStack{
            Circle()
                .fill(Color.blue)
                .shadow(radius: 15)
                .frame(width: 150, height: 150, alignment: .center)
                .scaleEffect(isAnimating ? 1.2 : 1)
                .onAppear() {
                    withAnimation(Animation.easeInOut(duration: 1.2).repeatForever()){
                        self.isAnimating = true
                    }
                }
        }
        .padding(.top, 140)
    Spacer()
}
.edgesIgnoringSafeArea(.all)
}

我的预览显示了预期的动画:

在此处输入图像描述

但不知何故,在模拟器上,动画完全不同:

在此处输入图像描述

这是来自 SwiftUI 的错误吗?我在这里做错了什么?

4

1 回答 1

2

这是一个解决方案。使用 Xcode 12.1 / iOS 14.1 测试

Circle()
    .fill(Color.blue)
    .shadow(radius: 15)
    .frame(width: 150, height: 150, alignment: .center)
    .scaleEffect(isAnimating ? 1.2 : 1)
    .animation(Animation.easeInOut(duration: 1.2).repeatForever(), value: isAnimating)
    .onAppear() {
        self.isAnimating = true
    }

注意:在任何奇怪的动画效果情况下,请尝试查看您的动画并将每个动画限制为仅应跟踪的状态的值。

于 2021-01-08T16:38:22.480 回答