需要围绕按钮发光动画 [英] Need a Glowing Animation around a button
本文介绍了需要围绕按钮发光动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的应用程序中,我有一个大按钮。我希望它周围有一个发光的效果。
是否可以使用动画完成?
我尝试过使用图像,但看起来不干净且吸引人。
In my application i have a big button. I want it to have a glowing effect around it. Can it be done using animations? I have tried using the image but it does not looks clean and appealing.
推荐答案
我一直在处理你的问题,这是我的结果,我定义了的自定义子类UIButton
,添加 CABasicAnimation
动画 shadowRadius
属性,设置自动反转
为true且 repeatCount
为无穷大
I had been working in your question and this is my results,I define a custom subclass of UIButton
,adding a CABasicAnimation
animating shadowRadius
property, setting autoreverses
to true and repeatCount
to infinity
代码
Code
//
// 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属性以便更好地进行自定义
Edited: Added Inspectable attributes for better customization
希望这会有所帮助
这篇关于需要围绕按钮发光动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文