Почему анимация меняет цвет изображения? - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть функция, которая меняет изображение с некоторым эффектом:

  private func changeStarIcon(from: String, to: String) {
    UIView.animateKeyframes(withDuration: 0.5, delay: 0.0, options: UIView.KeyframeAnimationOptions.calculationModeCubic, animations: {
      UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.2, animations: {
        (self.navigationItem.rightBarButtonItems?[0].customView as? UIButton)?.imageView?.transform = CGAffineTransform(scaleX: 1.1, y: 1.1)
      })
      UIView.addKeyframe(withRelativeStartTime: 0.2, relativeDuration: 0.2, animations: {
        (self.navigationItem.rightBarButtonItems?[0].customView as? UIButton)?.imageView?.transform = CGAffineTransform.identity
        let fadeAnim = CABasicAnimation(keyPath: "contents")
        fadeAnim.fromValue = UIImage(named: from)
        fadeAnim.toValue = UIImage(named: to)
        fadeAnim.duration = 0.3
        (self.navigationItem.rightBarButtonItems?[0].customView as? UIButton)?.imageView?.layer.add(fadeAnim, forKey: "contents")
        (self.navigationItem.rightBarButtonItems?[0].customView as? UIButton)?.setImage( UIImage(named: to)?.withRenderingMode(.alwaysOriginal), for: .normal)
      })
    }) { success in
      (self.navigationItem.rightBarButtonItems?[0].customView as? UIButton)?.setImage( UIImage(named: to)?.withRenderingMode(.alwaysOriginal), for: .normal)
    }
  }

Когда я использую эту функцию, в середине анимации мое изображение становится серым (но изображение изначально белое).Я не понимаю, почему это происходит.

enter image description here

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Попробуйте эту кнопку для вас:

button.adjustsImageWhenHighlighted = false
0 голосов
/ 27 сентября 2019

Привет, надеюсь, это поможет вам в анимации

 //First animation
  UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.2, 
 animations: {

     //write Your code 


    }, completion: { (finished: Bool) in

                //Second Animation

     UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.2, 
     animations: {

   //write YourCode

 }, completion: { (finished: Bool) in

                //Third Animation

            })


    })

пожалуйста, измените время анимации

...