切换到不同的视图控制器后动画停止
Posted
技术标签:
【中文标题】切换到不同的视图控制器后动画停止【英文标题】:Animation stops after segueing to different view controller 【发布时间】:2015-04-25 17:21:42 【问题描述】:我的应用中有一个动画,它基本上只是让 UIButton
增长和缩小,让用户可以清楚地看到他们应该点击。
问题在于,虽然在视图首次出现时它可以正常工作,但如果我转到不同的视图控制器(使用 segue)然后返回(没有任何反应),它就无法正常工作。
这是我的代码:
override func viewWillAppear(animated: Bool)
expandAnimation()
func expandAnimation()
var animation = CABasicAnimation(keyPath: "transform.scale")
animation.toValue = NSNumber(float: 0.9)
animation.duration = 1
animation.repeatCount = 100
animation.autoreverses = true
animation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
appDevButton.layer.addAnimation(animation, forKey: nil)
我确定这是一个简单的修复方法,但我在网上找不到任何信息。
【问题讨论】:
不要忘记在 viewWillAppear 中调用 super:. 好像没什么区别…… 【参考方案1】:离开视图时从按钮中删除动画,
override func viewDidDisappear(animated: Bool)
super.viewDidDisappear(animated)
appDevButton.layer.removeAllAnimations()
【讨论】:
确实修复了它,但我还必须将它从viewWillAppear()
更改为 viewDidAppear()
。谢谢!
@user3746428 我试过了,但它似乎没有用......你做了什么不同于上面所说的吗?目前我在 viewDidAppear 方法中使用 [super viewDidAppear:YES] 调用了该方法; ,对于 viewDidDisappear 也是如此。不知道为什么它不起作用..
我遇到了类似的问题,只需在viewDidAppear()
中调用animation()
没有 removeAllAnimations()
在viewDidDisappear
中即可解决。这是不好的做法吗?【参考方案2】:
尝试解决方案:
// Allows the animation to appear on View Controller
override func viewWillAppear(_ animated: Bool)
super.viewDidAppear(true)
// Function call
expandAnimation()
// Allows the animation to disappear from View Controller
override func viewDidDisappear(_ animated: Bool)
super.viewDidDisappear(true)
// Function call
expandAnimation()
【讨论】:
以上是关于切换到不同的视图控制器后动画停止的主要内容,如果未能解决你的问题,请参考以下文章
在Scroll View的高度动画后,UIScrollView的子视图不响应触摸