0

我正在使用这样的数组为一些图像设置动画

NSArray *weatherFrames = [NSArray array];
weatherFrames = [[NSArray alloc] initWithObjects:
             [UIImage imageWithData:Data1],
             [UIImage imageWithData:Data2],
             [UIImage imageWithData:Data3],
             [UIImage imageWithData:Data4],
             [UIImage imageWithData:Data5],                 
             nil];
weatherImage.animationImages = weatherFrames;
weatherImage.animationDuration = 10.00;
weatherImage.animationRepeatCount = 1;
[weatherImage release];  

我想要做的是当有人触发呼叫(即来自 IBAction)时暂停动画。这是可能的还是有更好的方法来做到这一点?

谢谢

4

1 回答 1

0

我从这里的答案中复制了解决方案。

-(void)pauseLayer:(CALayer*)layer
{
    CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
    layer.speed = 0.0;
    layer.timeOffset = pausedTime;
}

-(void)resumeLayer:(CALayer*)layer
{
    CFTimeInterval pausedTime = [layer timeOffset];
    layer.speed = 1.0;
    layer.timeOffset = 0.0;
    layer.beginTime = 0.0;
    CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
    layer.beginTime = timeSincePause;
}

而要让 CALayer 传递给 pauseLayer 函数,可以使用以下代码。

CALayer *player = ImageView.layer;
[self pauseLayer:player];
于 2013-01-19T20:09:40.183 回答