【问题标题】:How to add Animation Button like this?如何添加这样的动画按钮?
【发布时间】:2018-04-11 06:23:33
【问题描述】:

如何创建像 video 这样的动画和阴影按钮 (一旦你点击按钮,它就会发光并摆动)

这是我的代码: (此代码实现了swing和shadow,但需要进行组织和安排,使其能够一键运行灯光和swing,并且按钮不会不必要地移动)

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

感谢您的宝贵时间

【问题讨论】:

  • 您应该描述您的代码实际做了什么,以及您面临的问题(例如缺少什么效果)。
  • 这段代码实现了swing和shadow,但是需要组织和安排,以便它能够一键运行灯光和swing,并且按钮不会不必要地移动
  • 请删除下面的“答案”和edit上面问题中的信息。
  • 好的,我很抱歉,我是新来的,这是我的第一个问题

标签: swift animation button uibutton


【解决方案1】:

您的代码按照编写的方式工作,并在单击时提供一个摆动按钮。确保从按钮拖动到按钮定义的控制单击。

您需要向按钮添加两张图片,一张用于关闭状态,一张用于打开状态。

继续

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

而更改图片的方法是将它们添加到资产目录中,然后使用:

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

    }

【讨论】:

  • 请告诉我如何让按钮像视频一样摆动和发光?
  • @Haitham 要点亮图像,您需要做两件事。 1)使用两个不同的图像 - 见我的编辑。 2)你可以添加一个图层来创建更亮的阴影。
  • 我知道如何将一张图片添加到一个按钮(1x、2x、3x),但我不知道如何将两张不同的图片添加到一个按钮
  • @Haitham 更新了答案以显示如何在将这两个图像添加到您的资产后更改它们。但此时,这是相当基本的东西,请考虑观看一些有关使用图像和按钮的 swift 或 xCode 教程。
  • @HaithamAbdelWahab,如果此解决方案适合您,请投票。
猜你喜欢
  • 2013-03-24
  • 2010-10-23
  • 2021-06-20
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2021-01-07
  • 1970-01-01
  • 2018-07-29
相关资源
最近更新 更多