Ios 在应用程序重新进入时恢复UIView动画?
我的应用程序的主视图控制器中有2个UIImageView。它们始终通过UIView动画设置动画。我想要实现的是,当用户单击home按钮时,暂停UIView动画,当用户返回应用程序时,恢复动画 因此,要暂停,我从我的应用程序委托调用一个方法到我的ViewController,以暂停应用程序WillResignActive调用 要继续,我也从app委托调用一个方法到我的ViewController,以在applicationdidebecomeactive方法中继续 这是我用来暂停或恢复动画的代码:Ios 在应用程序重新进入时恢复UIView动画?,ios,animation,uiview,uiimageview,resume,Ios,Animation,Uiview,Uiimageview,Resume,我的应用程序的主视图控制器中有2个UIImageView。它们始终通过UIView动画设置动画。我想要实现的是,当用户单击home按钮时,暂停UIView动画,当用户返回应用程序时,恢复动画 因此,要暂停,我从我的应用程序委托调用一个方法到我的ViewController,以暂停应用程序WillResignActive调用 要继续,我也从app委托调用一个方法到我的ViewController,以在applicationdidebecomeactive方法中继续 这是我用来暂停或恢复动画的代码:
-(void)pauseLayer:(CALayer*)layer {
CFTimeInterval paused_time = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = paused_time;
}
-(void)resumeLayer:(CALayer*)layer {
CFTimeInterval paused_time = [layer timeOffset];
layer.speed = 1.0f;
layer.timeOffset = 0.0f;
layer.beginTime = 0.0f;
CFTimeInterval time_since_pause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - paused_time;
layer.beginTime = time_since_pause;
}
- (void)pause:(BOOL)theBool {
if (theBool) {
[self pauseLayer:self.myImageView.layer];
[self pauseLayer:self.myImageViewleft.layer];
} else {
[self resumeLayer:self.myImageView.layer];
[self resumeLayer:self.myImageViewleft.layer];
}
}
因此,我记录了所有内容,并相应地调用了这些方法。但是,当我恢复动画时,图像视图不会从停止的位置恢复,很可能是在我将其放置在XIB(屏幕外)的位置
那么,当我重新进入我的应用程序时,我的XIB是否会被重新加载?绝对没有任何东西应该改变那些UIImageView的位置,这就是为什么我真的很困惑为什么会发生这种情况
编辑:我也尝试过以编程的方式创建我的图像,没有同样的问题。如果我在应用程序运行时通过应用程序中的按钮执行暂停和恢复操作,那么暂停和恢复操作会成功进行,似乎问题出在应用程序委托方法或其他方面
如果有人看到什么不对劲,请告诉我 我发现这非常复杂和棘手,所以现在我只使用Cocos2D,并使用CCDirector的暂停功能
编辑:刚刚尝试了CCDirector的暂停功能,效果非常好。一定要走这条路 您是否尝试过以编程方式创建
UIImageView
s?是的,也没有成功。同样的问题。如果我只是通过我的应用程序中的按钮来实现这一点,它工作得很好,所以它与委托方法有关。这真的很奇怪。你试过使用应用程序:dienterbackground
和willEnterForeground
而不是resignative和becomeActive吗?是的,只是试过,它也不起作用。