我的应用程序的主视图控制器中有 2 个 UIImageView。他们总是通过 UIView 动画制作动画。我想要实现的是当用户单击主页按钮时,暂停 UIView 动画,当用户返回应用程序时,恢复动画。
所以要暂停,我从我的应用程序委托调用一个方法到我的 ViewController 来暂停 applicationWillResignActive 调用。
为了恢复,我还从应用程序委托调用了一个方法到我的 ViewController 以在 applicationDidBecomeActive 方法中恢复。
这是我用来暂停或恢复动画的代码:
-(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];
}
}
因此,我对所有内容进行了 NSLogged,并且相应地调用了这些方法,但是当我恢复动画时,图像视图不会从它们停止的位置恢复,并且很可能位于我将它们放置在 XIB 中的位置(屏幕外)。
所以当我重新进入我的应用程序时,我的 XIB 会重新加载还是什么?绝对没有什么应该改变那些 UIImageView 的位置,这就是为什么我真的很困惑为什么会发生这种情况。
编辑:我也尝试过以编程方式创建我的图像,没有运气同样的问题。如果我在运行时通过我的应用程序中的按钮进行暂停和恢复,则它可以成功运行,看来问题出在应用程序委托方法或其他东西上。
如果有人看到有什么问题,请告诉我!