我希望连续旋转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”变量将动画样式更改为.none(如果为false),或者将其更改旋转数。我知道对此有笨拙的解决方案,例如使用CBAnimation (like this answer)或计时器(like this answer)。我希望能避免这些解决方案-我很好奇是否有一种方法可以使用我一直无法弄清楚的SwiftUI动画来实现。
非常感谢您的帮助!