как остановить анимацию QuartzCore-CABasicAnimation - PullRequest
0 голосов
/ 28 июня 2018

Моя анимация работает отлично, хотя я хочу добавить переключатель, который приостанавливает анимацию, нажимая, как вы можете видеть в «бегущем аниме» - сердце бьется при открытии экрана и при нажатии на него - оно останавливается, возвращается до оригинального размера

@IBOutlet var heartImage: UIButton!
var isAnimRunning = true

let pulseAnimation:CABasicAnimation = CABasicAnimation(keyPath: "transform.scale")

        override func viewDidLoad() {
        super.viewDidLoad()
           heartBit()
        }

        func heartBit(){
            if isAnimRunning == true{

                pulseAnimation.duration = 0.8
                pulseAnimation.toValue = NSNumber(value: 2.0)
                pulseAnimation.repeatCount = HUGE
                pulseAnimation.isCumulative = true
                pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
                pulseAnimation.autoreverses = true
                pulseAnimation.repeatCount = Float.greatestFiniteMagnitude
                pulseAnimation.fromValue = NSNumber(value: 0.0)

                self.view.layer.add(pulseAnimation, forKey: "transform.scale")
              //  self.view.layer.add(pulseAnimation, forKey: "transform.scale")
            }else if isAnimRunning == false{       //*****tried all that without any luck

                self.pulseAnimation.toValue = NSNumber(value: 1.0)

          //      self.view.layer.removeAnimation(forKey: "transform.scale")
                //self.view.layer.removeAllAnimations()
                // view.layer.removeAllAnimations()
                //self.view.layer.removeAnimation(forKey: "transform.scale")
               // self.view.layer.removeAllAnimations()

            }

        }

        @IBAction func heartBtn(_ sender: Any) {
           isAnimRunning = !isAnimRunning
        }

    }

спасибо за помощника. Любой вопрос, который я доступен

СНОВА - при нажатии заставьте сердце останавливаться и снова стучать - сердце возобновляет анимацию

1 Ответ

0 голосов
/ 28 июня 2018

Чтобы включить анимацию, я бы хотел обновить метод heartBit, как показано ниже,

func heartBit() {
    isAnimRunning = !isAnimRunning

    if isAnimRunning == false { // Run animation if no animation
        pulseAnimation.duration = 0.8
        pulseAnimation.toValue = NSNumber(value: 2.0)
        pulseAnimation.repeatCount = HUGE
        pulseAnimation.isCumulative = true
        pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
        pulseAnimation.autoreverses = true
        pulseAnimation.repeatCount = Float.greatestFiniteMagnitude
        pulseAnimation.fromValue = NSNumber(value: 0.0)

        self.view.layer.add(pulseAnimation, forKey: "transform.scale")
    } else { // Remove animation if already running
        self.view.layer.removeAllAnimations()
    }
}

И теперь вы можете вызывать этот метод на button click так же, как вы это делали в viewDidLoad, и он переключит анимацию.

@IBAction func heartBtn(_ sender: Any) {
    heartBit()
}

Примечание: Убедитесь, что ваш метод heartBtn подключен и вызывается при нажатии кнопки. По моим наблюдениям, трудно нажать кнопку, когда весь вид анимируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...