Ich versuche eine additive Animation auf den Grenzen eines AVPlayerLayer zu machen. Wenn Sie additive einfach auf YES setzen, wird die Animation unterbrochen. Ich muss es additiv machen, damit die Breite und Höhe mit verschiedenen Animationsparametern animiert werden können. Das Animieren der Schlüsselpfade bounds.size.width und bounds.size.height funktioniert ebenfalls nicht.Wie wird eine additive Animation in AVPlayerLayer-Grenzen verwendet?
Ich kann andere CALayer-Klassen mit dem folgenden Code gut animieren, also frage ich mich, ob AVPlayerLayer einen Bug hat. Hier
ist der Code:
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];
}
Dies ist, wie es aussieht:
Der rote Bereich der Videospiele sein sollte.
Sie können das Beispielprojekt überprüfen ich hier erstellt: https://www.dropbox.com/s/jxuh69wiqdwnuc6/PlayerLayer%20size%20Animation.zip?dl=1
Der Code in der Frage _ist_ animiert Grenzen, nicht Frame. Das Codebeispiel in der ursprünglichen Frage funktioniert für normale CALayers, daher scheint es eine besondere Eigenart von AVPlayerLayers zu sein. – Hooper
Das Codebeispiel in der ursprünglichen Frage ist auch animierende Grenzen! Weil Sie den Rahmen eines CALayers nicht animieren können! – Stoull