CoreAnimation - Opazität ein- und ausblenden Animation funktioniert nicht

Versuche ich zu schaffen, eine ziemlich einfache CoreAnimation für die Verwendung in einer AVComposition. Mein Ziel ist die Erstellung eines CALayer welche, durch verschiedene Unterebenen, blendet einen Titel in-und out -, dann schwindet in einem der Bilder. Eine Diashow, im Grunde. Diese wird exportiert .mov mit AVAssetWriter.

Mit Hilfe von der WWDC 2011 AVEditDemo, ich habe in der Lage zu Holen einen Titel und Bilder erscheinen. Das problem ist, dass Sie alle auf dem Bildschirm zur gleichen Zeit!

Ich erstellt habe, wird jede Ebene mit einer Deckkraft von 0,0. Ich habe dann Hinzugefügt, dass ein CABasicAnimation zu verblassen Sie von 0,0 bis 1,0, mit dem folgenden code:

CABasicAnimation *fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
fadeInAnimation.fromValue = [NSNumber numberWithFloat:0.0];
fadeInAnimation.toValue = [NSNumber numberWithFloat:1.0];
fadeInAnimation.additive = NO;
fadeInAnimation.removedOnCompletion = YES;
fadeInAnimation.beginTime = 1.0;
fadeInAnimation.duration = 1.0;
fadeInAnimation.fillMode = kCAFillModeForwards;
[titleLayer addAnimation:fadeInAnimation forKey:nil];

Das problem scheint zu sein das 'beginTime' - Eigenschaft. Das "1.0" ist dazu gedacht, eine Verzögerung, so dass es beginnt 1 Sekunde nach dem start der animation. Jedoch, es erscheint sofort auf dem Bildschirm. Ein fade-out-animation

Der Rückseite dieser code, für die fade-out, ändert einfach die fromValue auf 1,0 und die toValue auf 0.0. Es verfügt über eine Start-Zeit von 4,0 und funktioniert perfekt.

Ich bin mit dem folgenden zu erstellen, die animatedTitleLayer:

CATextLayer *titleLayer = [CATextLayer layer];
titleLayer.string =self.album.title;
titleLayer.font = @"Helvetica";
titleLayer.fontSize = videoSize.height / 6;
titleLayer.alignmentMode = kCAAlignmentCenter;
titleLayer.bounds = CGRectMake(0, 0, videoSize.width, videoSize.height / 6);
titleLayer.foregroundColor = [[UIColor redColor]CGColor];
titleLayer.opacity = 0.0;

Das Bild fade-in-Animationen haben eine beginTime 5 Sekunden auseinander. Wie der Titel, deren fade-out-Animationen funktionieren.

Jede Hilfe wäre sehr geschätzt werden!

Prost!

BEARBEITEN

Die Antworten waren alle hilfreich, aber schließlich entdeckte ich, dass nur eine animation Hinzugefügt werden könnten, um eine CALayer. Die fade-out-animation arbeitete als war es die Letzte Hinzugefügt.

Dann habe ich versucht, eine CAAnimationGroup, aber das hat nicht funktioniert wie ich das ändern das gleiche key-value-path.

Also ich realisiert habe, dass ein CAKeyframeAnimation ist das beste für diese. Nur ich habe einige Schwierigkeiten mit, die auch! Der code ist jetzt verblassen in Ordnung, aber es ist nicht ausklingt. Ich habe versucht verschiedene fillMode ist, verändert sich die Dauer, usw. Nicht, damit es funktioniert!!

Hier ist mein code:

    CAKeyframeAnimation *fadeInAndOut = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
    fadeInAndOut.duration = 5.0;
    fadeInAndOut.autoreverses = NO;
    fadeInAndOut.keyTimes = [NSArray arrayWithObjects:  [NSNumber numberWithFloat:0.0],
                                                            [NSNumber numberWithFloat:1.0],
                                                    [NSNumber numberWithFloat:4.0], 
                                                    [NSNumber numberWithFloat:5.0], nil];

    fadeInAndOut.values = [NSArray arrayWithObjects:    [NSNumber numberWithFloat:0.0],
                                                    [NSNumber numberWithFloat:1.0],
                                                    [NSNumber numberWithFloat:1.0], 
                                                    [NSNumber numberWithFloat:0.0], nil];
    fadeInAndOut.beginTime = 1.0;
    fadeInAndOut.removedOnCompletion = NO;
    fadeInAndOut.fillMode = kCAFillModeBoth;
    [titleLayer addAnimation:fadeInAndOut forKey:nil]; 

InformationsquelleAutor der Frage gamblor87 | 2012-01-03

Schreibe einen Kommentar