如何暂停和恢复UIView动画?

Tho*_*oos 4 iphone uiviewanimation

我有一个带有几个UILabel的UIView,它从上到下动画,反之亦然.一种Autoque让我们说:)我使用2个函数:

-(void)goUp 
-(void)goDown 
Run Code Online (Sandbox Code Playgroud)

这些函数将UIView动画启动到所需位置.它们都定义了一个AnimationDidStopSelector,最后调用另一个函数.一切顺利.

当使用touchesBegan触摸屏幕时,我想暂停当前动画并使用touchesMoved事件更改UIView的垂直位置.在touchesEnded中,我希望将动画恢复到所需的最终位置.

这样做的正确方法是什么?

托马斯

Ant*_*ine 7

我在UIView上创建了一个类别来暂停和停止动画:

@interface UIView (AnimationsHandler)

- (void)pauseAnimations;
- (void)resumeAnimations;

@end

@implementation UIView (AnimationsHandler)
- (void)pauseAnimations
{
    CFTimeInterval paused_time = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil];
    self.layer.speed = 0.0;
    self.layer.timeOffset = paused_time;
}

- (void)resumeAnimations
{
    CFTimeInterval paused_time = [self.layer timeOffset];
    self.layer.speed = 1.0f;
    self.layer.timeOffset = 0.0f;
    self.layer.beginTime = 0.0f;
    CFTimeInterval time_since_pause = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil] - paused_time;
    self.layer.beginTime = time_since_pause;
}
Run Code Online (Sandbox Code Playgroud)