Анимация мерцания iOS в UIView с конечным числом раз - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь создать мигающий эффект на 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)
        }

Но этот код мигает в интерфейсе пользователя бесконечное количество времени. Я использовал другой код, но он мигал только один раз.

Что я хочу:

Так что я довольно близок, но я действительно хочу поморгать UIView для конечного количество раз, т.е. 30 раз, и оно должно остановиться после 30-го мигания.

Пожалуйста, помогите мне в этом, я думаю, у меня есть четкий вопрос. Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Есть встроенная функция класса для подсчета и вызова ее в блоке.

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)
    }
0 голосов
/ 06 ноября 2018

Используйте эту функцию для анимации просмотра. Я надеюсь, что это может помочь

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