У меня есть кнопка swirlButton, с которой я хотел бы анимировать прыжок вверх и вниз, и он должен был переворачиваться 3 раза вверх и 3 раза назад. Я использую TranslateBy, чтобы переместить его, и повернул, чтобы повернуть его, хотя в этом примере у меня есть только анимированная часть поворота, которая возвращается в обратном направлении после завершения анимации.
Прежде всего, я понятия не имею, как заставить его вращаться более одного раза. Например, я не могу установить повернутое (на :) значение на .pi * 3, потому что оно кажется равным 0 градусов и никогда не анимируется. То же самое, если я установлю его на .pi.
var transforms: CGAffineTransform = .identity
let jumpDuration:Double = 2.0 //0.8
let halfJumpDuration:Double = jumpDuration/2.0
UIView.animateKeyframes(withDuration: jumpDuration, delay: 0, options: [UIView.KeyframeAnimationOptions.calculationModeCubicPaced], animations: {
UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: halfJumpDuration/jumpDuration, animations: {
transforms = transforms.translatedBy(x: 0, y: -60)
transforms = transforms.rotated(by: .pi/2)
swirlButton.transform = transforms
})
UIView.addKeyframe(withRelativeStartTime: halfJumpDuration/jumpDuration, relativeDuration: halfJumpDuration/jumpDuration, animations: {
transforms = .identity
transforms = transforms.translatedBy(x: 0, y: 0)
swirlButton.transform = transforms
})
},
completion: { _ in
print("animation finished")
})
Помимо подъема и опускания, вращение очень далеко от того, что я хотел бы случиться. Сложно ли заставить его вращаться против часовой стрелки 3 раза вверх и продолжать вращаться против часовой стрелки 3 раза вниз?