iOS在UIView上闪烁动画的次数有限

时间:2018-11-06 12:03:06

标签: ios uiview swift4 xcode9.4

我正在尝试在UIView上创建闪烁效果。目前,我正在使用使UIView无限次闪烁的代码。代码看起来像这样

到目前为止我做了什么

 func startBlink() {
                  UIView.animate(withDuration: 0.8,//Time duration
                                delay:0.0,
                                options:[.allowUserInteraction, .curveEaseInOut, .autoreverse, .repeat],
                                animations: { self.alpha = 0 },
                                completion: nil)
        }

但是此代码使ui视图闪烁了无数次。我使用了另一个代码,但仅闪烁了一次。

我想要的:

  

所以我非常接近,但是我真的想让UIView闪烁有限   次数,即30次,并且必须在第30次眨眼后停止。

请帮助我,我想我的问题很清楚。请帮帮我。

2 个答案:

答案 0 :(得分:2)

使用此功能为View设置动画。希望对您有帮助

extension UIView {  
        func flash(numberOfFlashes: Float) {
           let flash = CABasicAnimation(keyPath: "opacity")
           flash.duration = 0.2
           flash.fromValue = 1
           flash.toValue = 0.1
           flash.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
           flash.autoreverses = true
           flash.repeatCount = numberOfFlashes
           layer.add(flash, forKey: nil)
       }
 }

答案 1 :(得分:0)

计数有一个内置的类函数,可以在块中调用它。

class func setAnimationRepeatCount(_ repeatCount: Float)

  func startBlink() {
              UIView.animate(withDuration: 0.8,//Time duration
                            delay:0.0,
                            options:[.allowUserInteraction, .curveEaseInOut,    .autoreverse, .repeat],
                            animations: { 

       UIView.setAnimationRepeatCount(30) // repeat 30 times.

     self.alpha = 0 
       },
                            completion: nil)
    }