如何使用Swift 3制作一个button的animationanimation

我有一个函数每3秒调用一次。 我怎样才能摇晃左右摇晃的buttonanimation。

func shakeButton() { if opened == false { //Shake Animation } } 

如果我正确地理解了你的话,就试试这个动摇的animation。 在你的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") } } 

然后在代码或storyboard / xib中的某处创buildCustomButton ,并调用myButton.shake()

您可以简单地根据您的需求采用此解决scheme

UPD:我有编辑的例子,而不是完全符合你的需求

UPD2:另一个解决scheme只需创buildUIButton扩展

 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") } } 

ans使用你的button动作callback:

 @IBAction func shake(_ sender: UIButton) { sender.shake() } 

这里真的很难知道你在找什么,没有一个示例GIF或什么的。 但是,如果这是我认为的那样,一个button从一个初始中心移动到一个新的中心稍微向左,到一个新的中心稍微向右,也许再次居中之前,你应该看看UIView的animateKeyframes(withDuration:delay:options:animations:completion :)方法。