2012-04-15 3 views
5

내 iOS 5 앱에는 이미지로 빨간색 구를 가진 맞춤 UIButton이 있습니다. 버튼을 두 드리면 orb이 빨강과 녹색 사이에서 펄싱/페이딩을 시작하길 바란다. 나는 모두 빨간색과 녹색의 이미지가 성공적으로 다음 코드를 사용하여 둘 사이에 교차 disolve 수 있습니다 그러나코어 애니메이션을 사용하는 루핑, 되돌릴 수있는 애니메이션

CABasicAnimation *imageSwitchAnimation = [CABasicAnimation animationWithKeyPath:@"contents"];  
imageSwitchAnimation.fromValue = (id)[UIImage imageNamed:@"red.png"].CGImage; 
imageSwitchAnimation.toValue = (id)[UIImage imageNamed:@"green.png"].CGImage; 
imageSwitchAnimation.duration = 1.5f;   
[self.button.imageView.layer addAnimation:imageSwitchAnimation forKey:@"animateContents"]; 

을 영원히 (내가 말할 때까지 잘 중지하는)도 계속 애니메이션을 싶습니다 애니메이션을 역순으로 반복합니다. 즉, 빨간색 → 녹색 → 빨간색으로 변색을 반복 한 다음 반복합니다.

위의 애니메이션 블록을 무한 루프에 넣으려고했는데 (페이딩이 빨간색에서 녹색으로 또는 녹색에서 빨간색으로 바뀌는지를 결정하는 논리와 함께) 그러나 이것은 전체 앱을 잠급니다.

다른 솔루션은 Cocos2d를 사용하는 것처럼 보입니다. Cocos2d는 앱에서 필요한 유일한 애니메이션이기 때문에 꽤 무겁습니다. (절대적으로 필요하지 않으면 이러한 프레임 워크를 사용하고 싶지 않습니다.)

도움을 주시면 감사하겠습니다.

답변

23

예, 바로 수행 할 수 있습니다. 바로 CABasicAnimation 내에 있습니다. 트릭은 가장 중요한 메소드가 CABasicAnimation Class Reference 또는 수퍼 클래스에 있지 않다는 것입니다. CABasicAnimation은 CAMediaTiming이라는 프로토콜을 구현합니다. CAMediaTiming Protocol Reference을 참조하십시오.

두 가지 속성, 특히 autoreversesrepeatCount에 대해 자세히 알고 싶습니다. 둘 다 자명하다. 그러나 무한 반복을 원한다면 어떻게 할까? repeatCount에 대한 항목 :

분수 일 수 있습니다. repeatCount가 0이면 무시됩니다. 기본값은 0입니다. repeatDuration 및 repeatCount를 모두 지정하면 비헤이비어가 정의되지 않습니다.

이 속성을 HUGE_VALF로 설정하면 애니메이션이 영원히 반복됩니다.

거기에서 해결할 수 있습니까?

+0

정말 고마워요. 완벽하게 작동합니다! 매우 명확하게 너무 설명했다 :) – Skoota