问题描述
我有一个每3秒调用的函数.如何为按钮发出摇动动画,使其落到一侧.
func shakeButton() { if opened == false { //Shake 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") } }
然后您在代码或故事板/xib中创建CustomButton某处,然后调用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") } }
ANS在按钮上使用按钮:
@IBAction func shake(_ sender: UIButton) { sender.shake() }
其他推荐答案
真的很难知道你在这里寻找什么,没有样品gif或其他东西.但如果这是我认为的,那么按钮从初始中心移动到左边的新中心,稍微向左边的新中心稍微向右到右侧,也可能在居中再次居中您应该查看UIView的AnimateKeyFrames(ukduration:delay:选项:动画:完成:)方法.
相关问答
相关标签/搜索