Есть ли проблема с чтением позиции презентации во время паузы?
Я пытаюсь приостановить и возобновить CALayer
. После того, как CALayer
приостановлен, я хочу обновить положение слоя с его текущей позицией представления.
Есть ли проблема с чтением позиции презентации во время паузы?
Я пытаюсь приостановить и возобновить CALayer
. После того, как CALayer
приостановлен, я хочу обновить положение слоя с его текущей позицией представления.
Есть ли проблема с чтением позиции презентации во время паузы?
Я пытаюсь приостановить и возобновить CALayer
. После того, как CALayer
приостановлен, я хочу обновить положение слоя с его текущей позицией представления.
Когда я пытаюсь сделать это, слой немного мерцает, когда я возобновляю его.
Это код, который я использую, чтобы приостановить и возобновить CALayer
(на основе Technical Q&A QA1673 предоставлено Apple):
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];
}
С уважением