gpt4 book ai didi

animation - 有没有更好的方法在 swiftui 中实现摇动动画?

转载 作者:行者123 更新时间:2023-12-03 17:00:27 27 4
gpt4 key购买 nike

当用户尝试在未填写所有文本字段的情况下登录时,我试图让按钮震动,这就是我目前遇到的情况:

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") })
}
}
}

然而,这对于按钮来说特别无用,即使这样动画看起来也很不正常,因为它非常机器人。有人可以提出改进建议,以便我可以动摇按钮吗?

最佳答案

尝试这个

struct ContentView: View {
@State var selected = false

var body: some View {
VStack {
Button(action: {
self.selected.toggle()
}) { selected ? Text("Deselect") : Text("Select") }
Rectangle()
.fill(Color.purple)
.frame(width: 200, height: 200)
.offset(x: selected ? -30 : 0)
.animation(Animation.default.repeatCount(5).speed(6))
}
}
}

关于animation - 有没有更好的方法在 swiftui 中实现摇动动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61619013/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com