Остановка анимации вращения в Swift UIIOS

Программируем под IOS
Anonymous
Остановка анимации вращения в Swift UI

Сообщение Anonymous »

Я надеюсь, что представление Swift UI будет непрерывно вращаться до тех пор, пока пользователь не нажмет кнопку, после чего оно остановится, пока не будет нажато снова. Из нескольких источников, подобных этому, я подумал, что этот код будет работать:

Код: Выделить всё

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, если она ложна, или изменяла количество поворотов. Я знаю, что для этого есть неуклюжие решения, такие как использование CBAnimation (например, этот ответ) или таймера (например, этот ответ). Я надеюсь по возможности избежать этих решений — мне любопытно, есть ли способ реализовать это с помощью анимации SwiftUI, которую я не смог понять.
Любая помощь будет очень признательна!

Подробнее здесь: https://stackoverflow.com/questions/644 ... n-swift-ui

Вернуться в «IOS»