如何淡出 iOS 12 上的 titleView 标签

How to fade out a titleView label on iOS 12

我正在尝试淡出已添加为 UIViewControllertitleView 导航项的 UILabel。在 iOS 11 及以下,以下代码正确淡出标签。当 iOS 12 上的 运行 时,淡入淡出 in 动画有效,但淡入淡出 out 没有动画 - 视图立即消失。

let fadeTextAnimation = CATransition()
fadeTextAnimation.type = .fade
fadeTextAnimation.duration = 0.5

navigationItem.titleView!.layer.add(fadeTextAnimation, forKey: nil)
(navigationItem.titleView as! UILabel).isHidden = didShowNavigationItemTitle

我也尝试过更改代码以使用 UIView.transition,但观察到相同的行为。

UIView.transition(with: navigationItem.titleView!,
    duration: 0.5,
    options: .transitionCrossDissolve,
    animations: {
        (self.navigationItem.titleView as! UILabel).isHidden = self.didShowNavigationItemTitle
    }, completion: nil)

如何在 iOS 12 中实现这种淡出?

只需使用 UIView.animate 块并为标题视图的 alpha 设置动画。

UIView.animate(withDuration: 0.5, delay: 0, options: .transitionCrossDissolve, animations: {
    self.navigationItem.titleView?.alpha = 0
})