我试图淡出一个UILabel
,它被添加为UIViewController
的导航项目的titleView
。在iOS 11及更低版本中,以下代码正确淡出标签。在iOS 12上运行时,淡入淡出动画可以正常工作,但淡出不会动画 - 视图会立即消失。
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
})