Если я правильно понял вас, попробуйте это на анимации встряхивания. Просто используйте этот метод в UIButton подкласса
class CustomButton: UIButton {
func shake() {
let animation = CAKeyframeAnimation(keyPath: "transform.translation.x")
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
animation.duration = 0.6
animation.values = [-20.0, 20.0, -20.0, 20.0, -10.0, 10.0, -5.0, 5.0, 0.0 ]
layer.add(animation, forKey: "shake")
}
}
Затем вы создаете CustomButton
где-то в коде или раскадровки/XIb и вызвать myButton.shake()
Вы можете просто принять это решение ваших потребностей
UPD: Я есть пример редактирования, который точно соответствует вашим потребностям
UPD2: другое решение Просто создайте UIButton
extension
extension UIButton {
func shake() {
let animation = CAKeyframeAnimation(keyPath: "transform.translation.x")
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
animation.duration = 0.6
animation.values = [-20.0, 20.0, -20.0, 20.0, -10.0, 10.0, -5.0, 5.0, 0.0 ]
layer.add(animation, forKey: "shake")
}
}
анс использовать на вас кнопку действия обратного вызова:
@IBAction func shake(_ sender: UIButton) {
sender.shake()
}
Я создал подкласс и добавил код выше, теперь как я правильно 'mybutton.shake()' правильно. В моем контроллере view я добавил 'giftButton.shake()', но он сказал, что UIButton не имеет дрожания. –
, кажется, вы используете выход из раскадровки, и это класс UIButton. –
Большое спасибо, он отлично работает! –