2017-02-19 5 views

ответ

7

Если я правильно понял вас, попробуйте это на анимации встряхивания. Просто используйте этот метод в 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() 
} 
+0

Я создал подкласс и добавил код выше, теперь как я правильно 'mybutton.shake()' правильно. В моем контроллере view я добавил 'giftButton.shake()', но он сказал, что UIButton не имеет дрожания. –

+0

, кажется, вы используете выход из раскадровки, и это класс UIButton. –

+0

Большое спасибо, он отлично работает! –

0

Это действительно сложно понять, что вы ищете здесь, без образца GIF или чего-то еще. Но если это то, что я думаю, это то, где кнопка перемещается из начального центра, в новый центр слегка влево, в новый центр немного вправо, а может быть, еще раз или два, прежде чем снова центрировать, вы должны посмотреть на UIView's animateKeyframes (withDuration: delay: options: animations: метод завершения :).

+0

Я добавил ссылку на видео, которое показывает тип анимации я ищу. –