【问题标题】:SwiftUI broken animation on simulatorSwiftUI在模拟器上损坏动画
【发布时间】:2021-04-14 08:41:24
【问题描述】:

我一直在玩 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 的错误吗?我在这里做错了什么?

【问题讨论】:

    标签: swiftui swiftui-navigationview


    【解决方案1】:

    这里有一个解决方案。使用 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
        }
    

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

    【讨论】:

    • 嗨,谢谢!我的代码没有在模拟器上正确显示动画有什么原因吗?还是这只是 SwiftUI 中的一个错误?
    • 如果您删除导航视图,那么它也可以工作?。但是你错过了导航
    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2013-09-21
    • 2014-12-17
    • 1970-01-01
    相关资源
    最近更新 更多