2012-09-16 3 views
16

"화려"효과를주는 CALayer 애니메이션을 만들고 싶습니다. 그 때문에 '불투명도'속성을 애니메이션화하려고하지만 내 문제는 어디에서 시작해야하고 어떻게해야하는지 전혀 모른다는 것입니다. 여기 CALayer 불투명도 애니메이션

애니메이션 그래픽 설명이다 다시 0으로 한 후, 1 애니메이션,

opacity 
    | ___ 
1 | | | 
    | | | * repeatCount 
0 |___| |_ . . . 
    -------------------------> time 
    |______| 
    duration 

불투명도가 0에서 시작한다 (이 0 대 1 대 0 애니메이션들을 취 지속 시간과 동일한 초). 그런 다음이 과정은 'repeatCount'번 반복됩니다.

float duration = ...; // 0.2 secs, 1 sec, 3 secs, etc 
int repeactCount = ...; // 1, 2, 5, 6, ect 

CALayer* layer = ...; // I have a CALayer from another part of the code 
layer.opacity = 0; 

// Animation here 

done = YES; // IN THE END of the animation set this ivar to yes 

이 작업을 수행하는 가장 좋은 방법은 무엇입니까 :

다음의 코드에 어떤 배경입니까? 이전에는 CALayers를 사용한 적이 없었으므로 애니메이션 시스템이 어떻게 작동하는지 알 수있는 좋은 기회이기도합니다. 그건 그렇고, 내가 문서를 검색하고 하나 또는 두 개의 간단한 애니메이션을 추가하는 방법을 이해하지만, 나는이 특정 방법을 수행하는 방법을 모른다.

+0

그래프 용 업 그레 이드 XD –

답변

40

이 작업을 수행하는 가장 좋은 방법은 구체화 된 애니메이션 (guide 참조)을 사용하여 CABasicAnimation이라는 인스턴스를 만들고이를 레이어에 추가하는 것입니다.

코드는 다음과 같을 것이다 :

당신이 애니메이션은 당신이 대리자를 설정하고 animationDidStop:finished: 방법을 구현할 수 있습니다 완료되면 알고 싶다면
CABasicAnimation *flash = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
flash.fromValue = [NSNumber numberWithFloat:0.0]; 
flash.toValue = [NSNumber numberWithFloat:1.0]; 
flash.duration = 1.0;  // 1 second 
flash.autoreverses = YES; // Back 
flash.repeatCount = 3;  // Or whatever 

[layer addAnimation:flash forKey:@"flashAnimation"]; 

그러나 그것과 완료 블록을 사용하는 것이 가장 좋습니다 모든 코드를 같은 위치에 둘 수 있습니다. iOS 4 또는 OS X 용으로 작성한 경우 우수한 CAAnimationBlocks 카테고리를 사용하여이를 수행 할 수 있습니다.

+0

고마워요! 그건 완벽하게 작동합니다. 한가지 : 'animationWithKeyPath :' – Alex

+0

@Alex OK, 대답을 업데이트 할 것입니다. (메모리에서 가져온 것이므로 항상 신뢰할 수있는 소스가 아닙니다 ...) – trojanfoe

+0

이해가 안됩니다. 페이드 인하다가 즉시 사라집니다. –

0

트로이안의 답변이 우수합니다. "타임 라인"에 대한 더 많은 제어권을 원한다면 그걸 추가하고 싶습니다. (얼마나 오래 걸릴 것입니까? 얼마나 오래 기다려야합니까? 그리고 얼마나 오래 걸릴 것입니까? 등등) 복수의 CABasicAnimation을 CAAnimationGroup에 결합하려고합니다. 당신은이 주제에 내 책 장을 읽어보십시오

이, 마지막 부분이있는 CAAnimation과 그 자손에 대한 자습서를 구성

: 내 토론은 아이폰 OS에 지시한다

http://www.apeth.com/iOSBook/ch17.html#_core_animation

참고; Mac OS X에서 그 위치에 있으면보기/레이어 아키텍처가 조금 다르지만 CAAnimation에 대한 내용은 여전히 ​​정확합니다.

관련 문제