프로그래밍/iOS

[iOS] CABasicAnimation scale

삶의안식처 2016. 6. 14. 17:25

http://life-shelter.tistory.com/159 



위 링크에서 circle뷰를 만들었으니 풍선처럼 부푸는 애니메이션 코드 작성


CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 

[animation setFromValue:[NSNumber numberWithFloat:.001f]]; // 시작 크기

[animation setToValue:[NSNumber numberWithFloat:1.f]]; // 완료 크기

[animation setDuration:0.3f]; // 애니메이션까지 걸리는 초

animation.fillMode = kCAFillModeForwards; // 애니메이션이 겹칠때 앞으로 오게(5개 연속으로 할거라서 적용함)

animation.removedOnCompletion = NO; // 애니메이션이 끝나고 유지

[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]]; // 순차적으로 동작하게 Linear로 설정 

[animation setTimingFunction:[CAMediaTimingFunction functionWithControlPoints:.34 :.01 :.69 :1.37]]; // 어느점을 기준으로 동작할지 설정 

[[view1 layer] addAnimation:animation forKey:@"scale"]; // 1번째 뷰 적용

animation.duration = 0.6f; // 2번째 뷰 시간 설정

[[view2 layer] addAnimation:animation forKey:@"scale"]; // 2번째 뷰 적용

animation.duration = 0.9f; // 3번째 뷰 시간 설정

[[view3 layer] addAnimation:animation forKey:@"scale"]; // 3번째 뷰 적용

animation.duration = 1.2f; // 4번째 뷰 시간 설정

[[view4 layer] addAnimation:animation forKey:@"scale"]; // 4번째 뷰 적용

animation.duration = 1.5f; // 5번째 뷰 시간 설정

animation.delegate = self; // delegate 설정

[[view5 layer] addAnimation:animation forKey:@"scale"]; // 5번쨰 뷰 적용


위같이 한 후 애니메이션이 끝나고 아래 함수에서 원하는 작업을 하면 된다.

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag

{

    NSLog(@"애니메이션 끝");

}