如何在didEnterBackground之后继续UIImageView动画?

时间:2012-09-05 19:11:35

标签: ios animation uiimageview calayer

我有一个简单的UIImageView(myimageview)加载了动画图像的NSArray(animationArray)(在我的ViewController.m)中:

[self.myimageview setAnimationImages:self.animationArray];
[self.myimageview setAnimationDuration:[self durationTime]];
[self.myimageview setAnimationRepeatCount: 1];
[self.myimageview startAnimating];

我知道在哪里使用stopAnimating等。但是我有奇怪的问题。当屏幕锁定时,我的动画没有任何反应。任何东西都像魅力一样。我解锁屏幕后它会继续。

然而,当我的应用程序进入后台模式时,整个动画停止(我的动画长达2-3分钟,因此不可接受)。我搜索了一下,发现了这个主题:

How to pause a UIImageView animation

它说要使用此代码:

UIView *viewBeingAnimated = //your view that is being animated
viewBeingAnimated.frame = [[viewBeingAnimated.layer presentationLayer] frame];
[viewBeingAnimated.layer removeAllAnimations];
//when user unpauses, create new animation from current position.

现在我正在尝试将此实现到AppDelegate.m

中的代码中
// in -(void)applicationDidEnterBackground:
self.viewController.myimageview.frame = [[self.myimageview.frenchPress.layer presentationLayer] frame];

但是我在XCode 中遇到了这个问题(对于上面一行),我无法继续:

AppDelegate.m:40:47: Receiver type 'CALayer' for instance message is a forward declaration

如果我退出到后台,我会节省时间:self.currentDate(仅用于旁注,以防我们需要)。

如何在不中断的情况下暂停和播放动画?

1 个答案:

答案 0 :(得分:3)

为了访问CALayer的所有消息和属性,您必须包含其相应的框架标题:

#import <QuartzCore/QuartzCore.h>

这有望消除警告。