Я пытаюсь создать довольно простой CoreAnimation для использования в AVComposition
. Моя цель - создать CALayer
, который через различные подслои стирает заголовок и выходит, а затем исчезает в образах. Слайд-шоу, в основном. Это экспортируется в .mov, используя AVAssetWriter
.CoreAnimation - Непрозрачность Fade In и Out Анимация не работает
С помощью WWE 2011 AVEditDemo я смог получить заголовок и изображения. Проблема в том, что они все на экране одновременно!
Я создал каждый слой с непрозрачностью 0.0. Я потом добавил CABasicAnimation
исчезать их от 0,0 до 1,0, используя следующий код:
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];
Проблема, как представляется, являются собственностью «BeginTime». «1.0» означает задержку, поэтому он начинается через 1 секунду после начала анимации. Тем не менее, он появляется на экране сразу. Анимация затухания
Реверс этого кода, для постепенного исчезновения, просто изменяет fromValue на 1.0 и toValue на 0.0. Он имеет время начала 4.0 и работает отлично.
Я использую следующие для создания 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;
перепыла изображения в анимации есть BeginTime 5 секунд друг от друга. Как и название, их угасающие анимации отлично работают.
Любая помощь была бы принята с благодарностью!
Cheers!
EDIT
ответы были полезны, но в конце концов я обнаружил, что только одна анимация может быть добавлен к CALayer
. Активизировалась анимация с постепенным исчезновением, поскольку она была последней.
Затем я попробовал CAAnimationGroup, но это не сработало, поскольку я изменял один и тот же путь значений ключа.
Так что я понял, что CAKeyframeAnimation
является лучшим для этого. Только у меня есть с этим трудности! Код теперь исчезает в порядке, но он не исчезает. Я пробовал различные fillMode, менял продолжительность и т. Д. Не могу заставить его работать!
Вот мой код:
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];
так вы пытаетесь заблаговременно располагать и настраивать слои, или вы можете добавить их в качестве перехода по слайдам? – nielsbot
Я позиционирую и настраиваю заранее. Я понял это благодаря этому сообщению: http://stackoverflow.com/questions/2184803/what-kind-of-value-is-keytime-in-an-cakeyframeanimation – gamblor87
Вы смогли экспортировать CALayer в видео? Я застрял на этом сейчас. Если у вас есть какие-либо советы, ответьте на мой вопрос. Благодаря! http://stackoverflow.com/questions/10285175/avfoundation-exporting-calayers-only –