【发布时间】:2020-10-20 05:29:38
【问题描述】:
我希望连续旋转 Swift UI 视图,直到用户按下按钮,此时它会停止,直到再次按下。从this one 等几个来源,我认为这段代码可以工作:
struct ContentView: View {
@State var go = false
let style = Animation.linear.repeatForever(autoreverses: false)
var body: some View {
VStack {
Button("Rotate") {
go.toggle()
}
Text("wheee")
.rotationEffect(.degrees(go ? 360 : 0))
.animation(style)
}
}
}
我希望“旋转”按钮开始和停止旋转。它开始正常,但不会停止 - 视图开始来回抽动,只会随着您按下按钮而变得更糟。
我尝试了一些变体,例如让“go”变量在 false 时将动画样式更改为 .none,或者让它更改旋转次数。我知道对此有一些笨拙的解决方案,例如使用 CBAnimation (like this answer) 或计时器 (like this answer)。如果可以的话,我希望避免使用这些解决方案——我很好奇是否有一种方法可以使用我无法弄清楚的 SwiftUI 动画来实现。
非常感谢任何帮助!
【问题讨论】:
-
你试过改变
style吗?Animation.linear.repeatForever(autoreverses: false)到Animation.linear.delay(0)
标签: ios swift animation swiftui