【问题标题】:How do you make a shake animation for a button using Swift 3 [closed]如何使用 Swift 3 为按钮制作抖动动画 [关闭]
【发布时间】:2017-07-08 21:47:07
【问题描述】:

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

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

【问题讨论】:

    标签: ios animation swift3 uibutton xcode8


    【解决方案1】:

    如果我理解正确,请在摇动动画上试试这个。 只需在您的 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()
    }
    

    【讨论】:

    • 我创建了子类并添加了上面的代码,现在如何正确调用mybutton.shake()。在我的视图控制器中,我添加了giftButton.shake(),但它说 UIButton 没有成员抖动。
    • 在我看来你使用故事板的插座,它是 UIButton 类。
    【解决方案2】:

    如果没有示例 GIF 或其他东西,真的很难知道您在此处寻找什么。但如果它是我认为的那样,按钮从初始中心移动到稍微向左的新中心,稍微向右移动到新中心,也许再过一两次,然后再次居中,你应该看看 UIView 的animateKeyframes(withDuration:delay:options:animations:completion:) 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多