如何使用Swift 3为按钮制作摇动动画

Nat*_*n C 4 animation uibutton ios swift3 xcode8

我有一个每3秒调用一次的函数.如何为左右摇晃的按钮制作摇动动画.

func shakeButton() {
    if opened == false {
        //Shake Animation
    }
}
Run Code Online (Sandbox Code Playgroud)

Mak*_*kyy 16

如果我理解正确的话,试试摇动画.只需在您的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")
    }
}
Run Code Online (Sandbox Code Playgroud)

然后CustomButton在代码或storyboard/xib中创建某个地方并调用myButton.shake()

您可以根据需要采用此解决方案

UPD:我编辑的例子比完全符合你的需要

UPD2:另一个解决方案只需创建UIButton扩展

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

}
Run Code Online (Sandbox Code Playgroud)

ans使用你按钮动作回调:

@IBAction func shake(_ sender: UIButton) {
    sender.shake()
}
Run Code Online (Sandbox Code Playgroud)