暂停时读取演示位置是否有问题?
我正在尝试暂停和恢复一个CALayer
。一旦CALayer
被暂停,我想使用它的当前演示位置更新图层的位置。
当我尝试这样做时,一旦我恢复图层,图层会稍微闪烁。
这是我用来暂停和恢复CALayer
的代码(基于由Apple提供的技术Q&A QA1673):
CFTimeInterval pausedTime;
void pauseLayer(CALayer *layer)
{
pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
layer.beginTime = 0;
// layer.position = ((CALayer*)[layer presentationLayer]).position;
}
void resumeLayer(CALayer *layer)
{
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval _elapsedTimeSincePaused = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = _elapsedTimeSincePaused;
}
如果我取消注释
layer.position = ((CALayer*)[layer presentationLayer]).position;
在 pauseLayer
中,当我调用 resumeLayer
时,图层会闪烁一次。这是我的动画代码:
- (void) startAnimation:(id)sender
{
layer10Animation = [CABasicAnimation animationWithKeyPath:@"position.x"];
layer10Animation.duration = 1;
layer10Animation.toValue = [NSNumber numberWithInt:300];
layer10Animation.fromValue = [NSNumber numberWithInt:20];
layer10Animation.repeatCount = 100;
layer10Animation.autoreverses = YES;
[layer10 addAnimation:layer10Animation forKey:nil];
}
祝好