Он не основан на блоках, но вы можете попробовать использовать CAKeyFrameAnimation, где вы указываете несколько ключевых кадров, которые должна включать анимация.Преимущество метода, основанного на блоках, заключается в том, что метод Core Animation позволяет создавать более плавные анимации.
Это может быть немного излишним, поскольку, как говорит Роб, вы можете просто сделать CABasicAnimation и установить для fromValue и toValue0 и 2 * M_PI соответственно.Но этот пример показывает вам, как вы могли бы также сделать произвольную анимацию вращения с плавным движением.
Сначала убедитесь, что вы добавили QuartzCore Framework на этапы сборки.Затем убедитесь, что вы импортируете заголовок, используя
#import <QuartzCore/QuartzCore.h>
, а затем в своем методе ротации сделайте это:
CAKeyframeAnimation *theAnimation = [CAKeyframeAnimation animation];
theAnimation.values = [NSArray arrayWithObjects:
[NSValue valueWithCATransform3D:CATransform3DMakeRotation(0, 0,0,1)],
[NSValue valueWithCATransform3D:CATransform3DMakeRotation(3.13, 0,0,1)],
[NSValue valueWithCATransform3D:CATransform3DMakeRotation(6.26, 0,0,1)],
nil];
theAnimation.cumulative = YES;
theAnimation.duration = 1.0;
theAnimation.repeatCount = 0;
theAnimation.removedOnCompletion = YES;
theAnimation.timingFunctions = [NSArray arrayWithObjects:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn],
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut],
nil
];
[imageView.layer addAnimation:theAnimation forKey:@"transform"];
, вдохновленный следующим: https://github.com/jonasschnelli/UIView-i7Rotate360
ХорошоУдачи!
т