AVSynchronizedLayer不同步动画

我有问题使动画使用AVPlayer时间而不是系统时间。 同步图层无法正常工作,动画在系统时间而不是播放器时间保持同步。 我知道玩家会玩。 如果我将CACurrentMediaTime()传递给beginTime,动画会立即开始,因为它不应该同步。

编辑

我可以看到红色正方形从最开始就处于最终状态,这意味着动画在开始时已到达终点,因为它在系统时间而不是AVPlayerItem时间同步。

// play composition live in order to modifier AVPlayerItem * playerItem = [AVPlayerItem playerItemWithAsset:composition]; AVPlayer * player = [AVPlayer playerWithPlayerItem:playerItem]; AVPlayerLayer * playerLayer = [AVPlayerLayer playerLayerWithPlayer:player ]; playerLayer.frame = [UIScreen mainScreen].bounds; if (!playerItem) { NSLog(@"playerItem empty"); } // dummy time playerItem.forwardPlaybackEndTime = totalDuration; playerItem.videoComposition = videoComposition; CALayer * aLayer = [CALayer layer]; aLayer.frame = CGRectMake(100, 100, 60, 60); aLayer.backgroundColor = [UIColor redColor].CGColor; aLayer.opacity = 0.f; CAKeyframeAnimation * keyframeAnimation2 = [CAKeyframeAnimation animationWithKeyPath:@"opacity"]; keyframeAnimation2.removedOnCompletion = NO; keyframeAnimation2.beginTime = 0.1; keyframeAnimation2.duration = 4.0; keyframeAnimation2.fillMode = kCAFillModeBoth; keyframeAnimation2.keyTimes = @[@0.0, @1.0]; keyframeAnimation2.values = @[@0.f, @1.f]; NSLog(@"%f current media time", CACurrentMediaTime()); [aLayer addAnimation:keyframeAnimation2 forKey:@"opacity"]; [self.parentLayer addSublayer:aLayer]; AVSynchronizedLayer * synchronizedLayer = [AVSynchronizedLayer synchronizedLayerWithPlayerItem:playerItem]; synchronizedLayer.frame = [UIScreen mainScreen].bounds; [synchronizedLayer addSublayer:self.parentLayer]; [playerLayer addSublayer:synchronizedLayer]; 

解决方案是AVSynchronizedLayer在模拟器上不起作用,但在设备上工作正常。