在swiftui中是否有更好的方法来实现抖动动画?

问题描述 投票:0回答:1

[我试图让用户在未填写所有文本字段的情况下尝试登录时摇动按钮,这是我到目前为止遇到的问题:

struct Shake: GeometryEffect {
    var amount: CGFloat = 10
    var shakesPerUnit = 3
    var animatableData: CGFloat

    func effectValue(size: CGSize) -> ProjectionTransform {
        ProjectionTransform(CGAffineTransform(translationX:
            amount * sin(animatableData * .pi * CGFloat(shakesPerUnit)),
            y: 0))
    }
}

struct Correct: View {
    @State var attempts: Int = 0

    var body: some View {
        VStack {
            Rectangle()
                .fill(Color.pink)
                .frame(width: 200, height: 100)
                .modifier(Shake(animatableData: CGFloat(attempts)))
            Spacer()
            Button(action: {
                withAnimation(.default) {
                    self.attempts += 1
                }

            }, label: { Text("Login") })
        }
    }
}

但是,这对于按钮尤其没有用,即使那样,动画看起来也很可爱,因为它具有很好的机器人性。有人可以提出改进建议,以便让我动摇吗?

animation button swiftui
1个回答
0
投票

尝试一下

© www.soinside.com 2019 - 2024. All rights reserved.