2015-01-06 4 views
0

끝날 때 애니메이션 속도를 늦추고 싶습니다.
이 코드를 살펴 보겠습니다.ios에서 애니메이션 속도를 느리게 할 수 없습니다.

[CATransaction begin]; 
CABasicAnimation *rotationAnimation; 
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
rotationAnimation.byValue = [NSNumber numberWithFloat:20]; 
rotationAnimation.duration = 2; 
rotationAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
[CATransaction setCompletionBlock:^{ 
    imageView.transform = CGAffineTransformRotate(imageView.transform, DEGREES_TO_RADIANS(myAngle*32.72)); 
}]; 

[imageView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"]; 
[CATransaction commit]; 

그러나 끝나거나 완료 블록에서 느려질 수 없습니다.

답변

0

@rakeshbs의 코멘트에서 언급했듯이 특정 각도에서 애니메이션을 멈추고 자하므로이 코드를 다음과 같이 수정했습니다. 내가 fromValue를 통해 특정 위치에 정지 할 수있어이 코드에 의해

내가해야 할 애니메이션의 속도를 늘리려면 시작의 속도를 제어 및 애니메이션의 중간에서 [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

를 통해 종료 rotationAnimation.byValue의 값을 높이려면 속도를 줄이면 같은 값을 줄여야합니다.

여기에서 나는이 방법을 통해 360도 한 번에 MyImageView를 회전시키고 싶다면 rotationAnimation.toValue = [NSNumber numberWithFloat:6.25];을 설정해야한다고 말하고 싶습니다.

+0

이 코드를 수정하면 CompletionBlock이 필요하지 않습니다. –

1

하는 시도 kCAMediaTimingFunctionEaseOut 대신

rotationAnimation.timingFunction = [CAMediaTimingFunction 
            functionWithName:kCAMediaTimingFunctionEaseOut]; 
kCAMediaTimingFunctionEaseIn의 사용

kCAMediaTimingFunctionEaseIn 지정 편의성에 페이싱. 편이성 간격은 애니메이션이 느리게 시작되도록하고 애니메이션이 진행됨에 따라 속도를 높입니다.

kCAMediaTimingFunctionEaseOut 완화 박리를 지정합니다. 손쉬운 페이징은 애니메이션이 빠르게 시작되도록하고 애니메이션이 완료되면 느려지 게합니다.

또한 rotationAnimation.duration을 변경하면 애니메이션이 완전히 느려질 수 있습니다.

rotationAnimation.duration = 10 

애니메이션 실행 시간을 10 초로 만듭니다.

소스 : https://developer.apple.com/library/mac/documentation/Cocoa/Reference/CAMediaTimingFunction_class/index.html#//apple_ref/doc/constant_group/Predefined_Timing_Functions

당신은 또한 기능을 완화하고 어떻게 다음 링크에서 행동에 대해 자세히 알아볼 수 있습니다. http://easings.net

+0

그러나 CompletionBlock의 속도를 줄이면 rotationAnimation이 느려집니다. –

+0

완공 블록을 늦추다는 것은 무엇을 의미합니까? 애니메이션 속도가 느려지는 애니메이션 시간을 변경할 수 없습니까? – rakeshbs

+0

특정 앵글에서 애니메이션을 멈추어야합니다. 그래서 완료 블록을 사용하고 있습니다. 애니메이션의 종료는 완료 블록에 의해 수행됩니다. 완료 블록 –

관련 문제