Ios 如何在pop期间设置UINavigationBar背景图像的动画

Ios 如何在pop期间设置UINavigationBar背景图像的动画,ios,uinavigationcontroller,uinavigationbar,swift3,Ios,Uinavigationcontroller,Uinavigationbar,Swift3,我正在尝试在pop转换期间为导航栏的背景图像设置动画 我意识到backgroundImage不是一个可设置动画的属性,但我已经能够在推送过程中通过在视图控制器的ViewWillAspect方法中使用CATTransition来实现这一点: override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let animation = CATransition() animat

我正在尝试在pop转换期间为导航栏的背景图像设置动画

我意识到backgroundImage不是一个可设置动画的属性,但我已经能够在推送过程中通过在视图控制器的ViewWillAspect方法中使用CATTransition来实现这一点:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    let animation = CATransition()
    animation.duration = 0.3
    animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    animation.type = kCATransitionFade

    navigationController?.navigationBar.layer.add(animation, forKey: nil)
    navigationController?.navigationBar.setBackgroundImage(navigationBarBackgroundImage, for: .default)
}
我希望这在pop期间也能起作用,但实际上,在pop动画完成后,导航栏会突然显示下一个视图控制器(未设置动画)的背景图像

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    transitionCoordinator?.animate(alongsideTransition: { [weak self] (context) in
    let animation = CATransition()
    animation.duration = 0.3
    animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    animation.type = kCATransitionFade

    self?.navigationController?.navigationBar.layer.add(animation, forKey: nil)
    self?.navigationController?.navigationBar.setBackgroundImage(navigationBarImage, for: .default)
    }, completion: nil)
}
我还尝试将上述尝试与过渡协调器相结合,但在pop完成后图像突然改变的情况下,它会产生完全相同的结果

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    transitionCoordinator?.animate(alongsideTransition: { [weak self] (context) in
    let animation = CATransition()
    animation.duration = 0.3
    animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
    animation.type = kCATransitionFade

    self?.navigationController?.navigationBar.layer.add(animation, forKey: nil)
    self?.navigationController?.navigationBar.setBackgroundImage(navigationBarImage, for: .default)
    }, completion: nil)
}
具体来说,我正在寻找一种在iOS9和iOS10上工作的方法