在 navigationItem 中停止 animateWithDuration

Posted

技术标签:

【中文标题】在 navigationItem 中停止 animateWithDuration【英文标题】:stop animateWithDuration in navigationItem 【发布时间】:2016-03-09 22:39:21 【问题描述】:

我正在尝试为我的navigationItem.rightBarButtonItem 设置动画,使其从绿色到白色反复闪烁......所以我这样做了

UIView.animateWithDuration(1.0, delay:0, options: [.Repeat, .Autoreverse], animations: 
    self.navigationItem.rightBarButtonItem?.tintColor = .greenColor()                
, completion: nil)

正如我在question 中看到的那样

它的工作原理

问题是我正在使用UITabView,每次我在视图之间切换并返回第一个视图时,都会停止闪烁

我认为这是因为我将一层又一层的动画卡在某个地方

我知道要删除动画我应该使用layer.removeAllAnimations()

问题是我不知道在哪个视图上做它

我试过self.view.layer.removeAllAnimations() 但它没有用。

如何到达我为 navigationItem 动画创建的这一层

所以我可以删除它?

【问题讨论】:

【参考方案1】:

我通过重新定位动画的创建来解决这个问题

一开始我把它放在 viewWillAppear 函数中

并且还尝试在此之前将按钮初始化为白色

但它看起来不像那样工作,所以我将动画重新定位到

viewDidAppear 函数并将按钮的初始化设置为白色

在 viewWillAppear 中,它现在似乎可以正常工作了 :)

谢谢

【讨论】:

以上是关于在 navigationItem 中停止 animateWithDuration的主要内容,如果未能解决你的问题,请参考以下文章

设置 navigationItem 标题延迟问题

navigationItem.setLeftBarButton() 不适用于旧版本

如何在 SwiftUI 中停止 Animation().repeatForever

stop() 是用于停止动画 :animated 用于判断动画是否在进行中

Android 中 Animation 怎么停止

如何停止css animation动画