切换应用时删除了图层动画

时间:2012-02-15 13:39:27

标签: objective-c core-animation

(iOS 5.0)

我将CAKeyframeAnimation添加到视图的图层,并且无限重复计数(光标闪烁)。但是,当切换应用程序并返回时,动画将从图层中删除(或者可能整个图层被替换,我不确定)。

我尝试在viewDidLoad和viewWillAppear上重新添加它们,但在切换应用时都没有调用它们。我确实发现UIApplicationDelegate中有一个applicationWillEnterForeground:方法。我打算用这个,但我有两个问题:

  • 是否还有其他情况会触发动画或图层被卸载?是否有更合适的事件要听?
  • 回应这些事件的最佳做法(在设计模式中)是什么(例如使用目标行动)?

2 个答案:

答案 0 :(得分:3)

切换应用或视图控制器时,系统会让图层上的动画停止(完成),因此您可以将/* base rule */ #a, #b, #c { min-width:200px; } /* conditionally shrink */ @media all and (max-width: 768px) { #a { min-width:0; } } @media all and (max-width: 548px) { #b { min-width:0; } } @media all and (max-width: 320px) { #c { min-width:0; } } 设置为removedOnCompletion(默认为NO),它会起作用。

答案 1 :(得分:2)

当你的应用再次出现在前台时,你必须再次将动画添加到CALayer

您需要在收到applicationWillResignActive回调时将其删除。如果需要,您可以查看presentationLayer以获取当前呈现的或接近 - 屏幕属性。

然后,当您的应用根据applicationDidBecomeActive回调再次激活时,请重新添加动画。

您的应用可以出于多种原因从有效状态转为无效状态,例如:接听电话,短信,闹钟,用户按下主页按钮等

看看我对这个问题的回答,其中我将介绍恢复CAAnimation的一些问题:

Restoring animation where it left off when app resumes from background