Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS 12上淡出标题视图标签_Ios_Swift_Uikit_Uiviewanimation_Ios12 - Fatal编程技术网

如何在iOS 12上淡出标题视图标签

如何在iOS 12上淡出标题视图标签,ios,swift,uikit,uiviewanimation,ios12,Ios,Swift,Uikit,Uiviewanimation,Ios12,我正在尝试淡出一个UILabel,它已作为UIViewController的导航项标题视图添加。在iOS 11及以下版本上,以下代码将正确淡出标签。在iOS 12上运行时,淡入动画可以工作,但淡出不会产生动画-视图立即消失 let fadeTextAnimation = CATransition() fadeTextAnimation.type = .fade fadeTextAnimation.duration = 0.5 navigationItem.titleView!.layer.ad

我正在尝试淡出一个
UILabel
,它已作为
UIViewController
的导航项
标题视图添加。在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中实现这种淡出?

只需使用
ui视图。设置
块动画并设置标题视图的alpha动画

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

您是否尝试过其他动画类型/子类型?它们有类似的问题吗?我现在尝试了其他几种动画类型:它们似乎可以正确地设置动画…这确实可以正确地设置动画,但我遇到了一些其他困难,即使用
alpha
属性而不是
ishiden
。我想在标签隐藏的情况下打开视图,但由于某些原因,在
viewDidLoad
viewwillbeen
期间,将导航项的
titleView
设置为
alpha
0
不会生效(或者更确切地说,在加载视图后不久,似乎有什么东西使navigationItem的标题视图变得不透明)我想这是对这个问题的回答;也许我会提出其他问题作为另一个问题