如何添加这样的动画按钮?

时间:2018-04-11 06:23:34

标签: swift animation button uibutton

如何在video中创建动画和阴影按钮 (一旦你点击按钮,它会闪耀并摆动)

这是我的代码: (此代码实现了摆动和阴影,但需要进行组织和排列,以便只需单击即可运行灯光和摆动,按钮不会不必要地从其位置移动)

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var aBtn: ButtonWithShadow!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func btnClick(_ sender: UIButton) {
        if sender.isSelected {
            sender.isSelected = false
            sender.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.50).cgColor
            sender.layer.shadowOffset = CGSize(width: 0, height: 3)
            sender.layer.shadowOpacity = 1.0
            sender.layer.shadowRadius = 10.0
            sender.layer.masksToBounds = false
        } else {
            sender.isSelected = true
            sender.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.0).cgColor

        }

        aBtn.layer.anchorPoint = CGPoint(x: 0.5, y: 0)
        aBtn.layer.transform = CATransform3DMakeRotation(-.pi / 15, 0, 0, 1)
        let needleAnim = CABasicAnimation(keyPath: "transform.rotation.z")
        needleAnim.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
        needleAnim.duration = 1.0 as? CFTimeInterval ?? CFTimeInterval()
        needleAnim.repeatCount = 5
        needleAnim.autoreverses = true
        // Setting fillMode means that, once the animation finishes, the needle stays in its end position.
        needleAnim.fillMode = kCAFillModeForwards
        needleAnim.isRemovedOnCompletion = true
        needleAnim.toValue = Double.pi / 15
        aBtn.layer.add(needleAnim, forKey: nil)
    }    
}

import UIKit

class ButtonWithShadow: UIButton {
    override func draw(_ rect: CGRect) {
        //updateLayerProperties()
    }
}

感谢您的时间

1 个答案:

答案 0 :(得分:0)

您的代码按照书面形式工作,并在单击时提供一个摆动按钮。确保按住Ctrl键单击从按钮拖动到按钮定义。

swing button

您需要在按钮上添加两个图像,一个用于关闭状态,另一个用于打开状态。

off

on

以下是添加设置图像的中间结果。

enter image description here

并且更改图像的方法是将它们添加到资产目录中,然后使用以下命令更改它们:

if sender.isSelected {
        sender.isSelected = false
        sender.setImage(#imageLiteral(resourceName: "off"), for: .normal)
        sender.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.50).cgColor
        sender.layer.shadowOffset = CGSize(width: 0, height: 3)
        sender.layer.shadowOpacity = 1.0
        sender.layer.shadowRadius = 10.0
        sender.layer.masksToBounds = false
    } else {
        sender.isSelected = true
        sender.setImage(#imageLiteral(resourceName: "onbtn"), for: .normal)
        sender.layer.shadowColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.0).cgColor

    }