围绕一个button需要一个发光的animation

在我的应用程序中,我有一个大button。 我希望它有一个发光的效果。 可以使用animation完成吗? 我曾尝试使用图像,但它看起来不干净,有吸引力。

我一直在你的问题工作,这是我的结果,我定义了一个UIButton的自定义子类,添加一个CABasicAnimationanimationshadowRadius属性,设置autoreverses为true和repeatCount为无穷

 // // GlowingButton.swift // NavigationButtonRotateQuestion // // Created by Reinier Melian on 01/07/2017. // Copyright © 2017 Pruebas. All rights reserved. // import UIKit @IBDesignable class GlowingButton: UIButton { @IBInspectable var animDuration : CGFloat = 3 @IBInspectable var cornerRadius : CGFloat = 5 @IBInspectable var maxGlowSize : CGFloat = 10 @IBInspectable var minGlowSize : CGFloat = 0 override init(frame: CGRect) { super.init(frame: frame) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } override func awakeFromNib() { super.awakeFromNib() self.contentScaleFactor = UIScreen.main.scale self.layer.masksToBounds = false self.setupButton() self.startAnimation() } func setupButton() { self.layer.cornerRadius = cornerRadius self.layer.shadowPath = CGPath(roundedRect: self.bounds, cornerWidth: cornerRadius, cornerHeight: cornerRadius, transform: nil) self.layer.shadowColor = UIColor.red.cgColor self.layer.shadowOffset = CGSize.zero self.layer.shadowRadius = maxGlowSize self.layer.shadowOpacity = 1 } func startAnimation() { let layerAnimation = CABasicAnimation(keyPath: "shadowRadius") layerAnimation.fromValue = maxGlowSize layerAnimation.toValue = minGlowSize layerAnimation.autoreverses = true layerAnimation.isAdditive = false layerAnimation.duration = CFTimeInterval(animDuration/2) layerAnimation.fillMode = kCAFillModeForwards layerAnimation.isRemovedOnCompletion = false layerAnimation.repeatCount = .infinity self.layer.add(layerAnimation, forKey: "glowingAnimation") } } 

在这里输入图像说明

已编辑:添加Inspectable属性以实现更好的自定义

希望这可以帮助