【问题标题】:How to fade out a titleView label on iOS 12如何在 iOS 12 上淡出 titleView 标签
【发布时间】:2018-09-17 00:31:55
【问题描述】:

我正在尝试淡出已添加为UIViewController 导航项titleView 的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 中实现这种淡出效果?

【问题讨论】:

  • 你尝试过其他动画类型/子类型吗?他们有类似的问题吗?
  • 我现在尝试了一些其他的动画类型:它们的动画效果似乎正确......

标签: ios swift uikit uiviewanimation ios12


【解决方案1】:

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

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

【讨论】:

  • 这确实可以正确设置动画,但我在使用alpha 属性而不是isHidden 时遇到了一些其他困难。我想打开隐藏标签的视图,但由于某种原因,在viewDidLoad 或viewWillAppear 期间将导航项的titleView 设置为0 的alpha 不会生效(或者更确切地说,它似乎在加载视图后不久,某些东西使 navigationItem 的 titleView 变得不透明)
  • 我想这是对this问题的回答;也许我会将其他问题作为另一个问题提出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多