Я пытаюсь сделать аддитивную анимацию на границах AVPlayerLayer. Просто устанавливая добавку в YES, она разбивает анимацию. Мне нужно сделать эту добавку так, чтобы ширина и высота могли быть анимированы с различными параметрами анимации. Анимация ключевых путей bounds.size.width и bounds.size.height также не работает.Как использовать аддитивную анимацию на границах AVPlayerLayer?
Я могу анимировать другие классы CALayer в порядке с приведенным ниже кодом, поэтому я начинаю задаваться вопросом, есть ли у AVPlayerLayer ошибка.
Вот код:
AVPlayerLayer *vl;
// ...
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSURL *path = [[NSBundle mainBundle] URLForResource:@"vid" withExtension:@"mp4"]];
AVPlayer *player = [AVPlayer playerWithURL: path];
vl = [AVPlayerLayer playerLayerWithPlayer:player];
vl.videoGravity = AVLayerVideoGravityResize;
// vl = [CALayer layer]; // a normal calayer animates properly
vl.backgroundColor = [NSColor redColor].CGColor;
vl.frame = CGRectMake(200,100,150,100);
[_window.contentView.layer addSublayer:vl];
}
- (IBAction)animate:(id)sender {
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"bounds"];
animation.fromValue = [NSValue valueWithRect:CGRectMake(0,0,0, 0)];
animation.toValue = [NSValue valueWithRect:CGRectMake(0,0,240, 60)];
animation.duration = 4;
animation.additive = YES;
[vl addAnimation:animation forKey:nil];
}
Это то, что он выглядит следующим образом:
Красная площадь должна быть видео игры.
Вы можете проверить пример проект, который я создал здесь: https://www.dropbox.com/s/jxuh69wiqdwnuc6/PlayerLayer%20size%20Animation.zip?dl=1
Кодекса в вопросе _is_ анимация границ, а не кадр. Пример кода в исходном вопросе работает для обычных CALayers, поэтому он кажется причудой, характерной для AVPlayerLayers. – Hooper
Пример кода в исходном вопросе также анимирует границы! Потому что вы не можете анимировать рамку CALayer! – Stoull