Последовательная анимация затухания и затухания

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

    UIView.animateWithDuration(0.60, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
        self.recButton.alpha = 0.0
        }, completion: {
            (value: Bool) in
            UIView.animateWithDuration(0.60, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
                self.checkView.alpha = 1.0
                }, completion: {
                    (value: Bool) in
                    UIView.animateWithDuration(0.60, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
                        self.checkView.alpha = 0.0
                        }, completion: {
                            (value: Bool) in
                            UIView.animateWithDuration(0.60, delay: 0.0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
                                self.recButton.alpha = 1.0
                                self.recButton.enabled = true
                                }, completion: nil)
                    })
            })
    })

Хотя описанный выше метод работает, он не так гладок, как хотелось бы. Есть ли лучший способ сделать это?


person Brosef    schedule 09.08.2016    source источник


Ответы (1)


Вам нужно четыре ключевых кадра для анимации, которую вы хотите: затухание кнопки, затухание изображения, затухание изображения, затухание кнопки.

let button: UIButton
let checkmarkImage: UIImageView

button.alpha = 1.0
checkmarkImage = 0.0

UIView.animateKeyframesWithDuration(2.4, delay: 0, options: .CalculationModeLinear, animations: {
  UIView.addKeyframeWithRelativeStartTime(0.0, relativeDuration: 0.25, animations: { 
    button.alpha = 0.0
  })
  UIView.addKeyframeWithRelativeStartTime(0.25, relativeDuration: 0.25, animations: {
    checkmarkImage.alpha = 1.0
  })
  UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.25, animations: {
    checkmarkImage.alpha = 0.0
  })
  UIView.addKeyframeWithRelativeStartTime(0.75, relativeDuration: 0.25, animations: {
    button.alpha = 1.0
  })
}, completion: nil)

Этот вопрос вызвал у меня любопытство — эта штука с ключевыми кадрами довольно крутая.

person CloakedEddy    schedule 10.08.2016