AVComposition
에 사용할 비교적 간단한 CoreAnimation을 만들려고합니다. 내 목표는 CALayer
을 만들고 다양한 하위 레이어를 통해 제목을 페이드 인/페이드 아웃 한 다음 아웃 이미지를 페이드 아웃합니다. 기본적으로 슬라이드 쇼입니다. 이것은 AVAssetWriter
을 사용하여 .mov로 내보내집니다.CoreAnimation - 불투명도 페이드 인 및 아웃 애니메이션이 작동하지 않음
WWDC 2011 AVEditDemo의 도움을 받아 제목과 이미지를 표시 할 수있었습니다. 문제는 그 (것)들이 동시에 모두 스크린에있다이다!
불투명도가 0.0 인 각 레이어를 만들었습니다. 나는 다음 코드를 사용하여 0.0에서 1.0로 퇴색하는 CABasicAnimation
를 추가했습니다 :
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 초 있습니다. 제목과 마찬가지로 페이드 아웃 애니메이션도 정상적으로 작동합니다.
는 어떤 도움을 크게 감상 할 수있다!
건배!
편집
대답은 모두 도움이되었다, 그러나 궁극적으로 나는 단 하나의 애니메이션이 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을 당신은 비디오로의 CALayer을 수출 할 수 있었다 – gamblor87
? 나는 지금 그것에 매달렸다. 조언이 있으면 제 질문에 답장하십시오. 감사! http://stackoverflow.com/questions/10285175/avfoundation-exporting-calayers-only –