Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Objective c 切换应用程序时删除图层动画_Objective C_Core Animation - Fatal编程技术网

Objective c 切换应用程序时删除图层动画

Objective c 切换应用程序时删除图层动画,objective-c,core-animation,Objective C,Core Animation,(iOS 5.0) 我在视图的图层上添加了一个CAKeyframeAnimation,重复次数无限(光标闪烁)。但是,当切换应用程序并返回时,动画将从层中移除(或者可能替换整个层,我不确定) 我尝试在viewDidLoad和ViewWillDisplay上重新添加它们,但在切换应用程序时两者都不会被调用。我确实发现UIApplicationLegate中有一个applicationWillEnterForeground:方法。我打算用这个,但我有两个问题: 是否存在触发动画或层卸载的任何其他情

(iOS 5.0)

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

我尝试在viewDidLoad和ViewWillDisplay上重新添加它们,但在切换应用程序时两者都不会被调用。我确实发现UIApplicationLegate中有一个applicationWillEnterForeground:方法。我打算用这个,但我有两个问题:

  • 是否存在触发动画或层卸载的任何其他情况?有没有更合适的活动可以听
  • 响应这些事件(例如使用目标行动)的最佳实践是什么(在设计模式意义上)

没错,当应用程序再次出现在前台时,您必须再次将动画添加到
CALayer

您需要在收到
applicationWillResignActive
回调时删除它们。如果需要,您可以检查
presentationLayer
以获取当前渲染的或尽可能接近的屏幕属性

然后,当您的应用程序按照
applicationIDbecomeactive
回调再次激活时,重新添加动画

由于多种原因,您的应用程序可能会从活动状态变为非活动状态,例如,接到电话、短信、警报、用户按下主页按钮等

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


当切换应用程序或视图控制器时,系统将让层上的动画停止(完成),因此您可以将
removedOnCompletion
设置为
NO
(默认值为
YES
),它将工作。

谢谢。对于任何感兴趣的人,我决定将此事件从应用程序委托传达给需要使用NSNotificationCenter重新添加动画的控制器。