Остановка анимации вращения в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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