2017-06-30 5 views
1

私のアプリケーションには大きなボタンがあります。私はそれがその周りに輝く効果を持ってほしい。 アニメーションを使用して行うことはできますか? イメージを使用しようとしましたが、きれいで魅力的ではありません。ボタンの周りに輝くアニメーションが必要です

+0

https://superdevresources.com/css-button-glow-effect/ [UIButtonにグロー効果を追加する – frozen

+0

可能な複製 - IOS](https://stackoverflow.com/questions/11556208/adding-glow-effect-to-uibutton-ios) –

答えて

4

私はあなたの質問で働いていた、これは私の結果ですが、私がtrueにautoreversesを設定し、shadowRadiusプロパティをアニメーションCABasicAnimationを追加し、UIButtonのカスタムサブクラスを定義し、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") 

    } 

} 

enter image description here

編集:追加検査可能で、より良いカスタマイズのために、このことができます

希望の属性

+0

Reinierありがとうございます。これは私が正確に探しているものです。これは非常に役に立ちました。 – Abhilasha

+0

@Abhilashaあなたの歓迎、私はあなたを助けてうれしいです、私の答えを受け入れてください、ありがとう –

関連する問題