实现一个图片的旋转有很多种方法 ,可以直接使用uiview transform 进行旋转 rotation ,但是要注意的 是 你要实现360 旋转 至少要设置4帧 也就是 至少每一次动画要旋转90度,
建议使用方法 是
+ (void)animateKeyframesWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewKeyframeAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(7_0);
duration : 动画的时间
delay:延迟多久执行
option :设置一些操作选项
1.常规动画属性设置(可以同时选择多个进行设置)
UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动。
UIViewAnimationOptionAllowUserInteraction:动画过程中允许用户交互。
UIViewAnimationOptionBeginFromCurrentState:所有视图从当前状态开始运行。
UIViewAnimationOptionRepeat:重复运行动画。
UIViewAnimationOptionAutoreverse :动画运行到结束点后仍然以动画方式回到初始点。
UIViewAnimationOptionOverrideInheritedDuration:忽略嵌套动画时间设置。
UIViewAnimationOptionOverrideInheritedCurve:忽略嵌套动画速度设置。
UIViewAnimationOptionAllowAnimatedContent:动画过程中重绘视图(注意仅仅适用于转场动画)。
UIViewAnimationOptionShowHideTransitionViews:视图切换时直接隐藏旧视图、显示新视图,而不是将旧视图从父视图移除(仅仅适用于转场动画)
UIViewAnimationOptionOverrideInheritedOptions :不继承父动画设置或动画类型。
2.动画速度控制(可从其中选择一个设置)
UIViewAnimationOptionCurveEaseInOut:动画先缓慢,然后逐渐加速。
UIViewAnimationOptionCurveEaseIn :动画逐渐变慢。
UIViewAnimationOptionCurveEaseOut:动画逐渐加速。
UIViewAnimationOptionCurveLinear :动画匀速执行,默认值
目前用到的这些 当然 如果你要 用这个方法 做转场的话 还有转场效果。
animation:就是 放入 你要执行的动画操作 这里我们要放入的旋转操作
[UIViewanimateKeyframesWithDuration:10.0delay:0options:UIViewAnimationCurveLinearanimations:^{
[UIViewaddKeyframeWithRelativeStartTime:0.0relativeDuration:0.1animations:^{
imageView.frame =CGRectMake(100,100, 80, 100);
}];
//startTime 为起始时间 duration 为持续时间 都是按总时间百分百计算的 下面就应该是开始在 1秒 持续 2秒
[UIViewaddKeyframeWithRelativeStartTime:0.1relativeDuration:0.2animations:^{
imageView.transform =CGAffineTransformMakeRotation(0.5*M_PI);
}];
[UIViewaddKeyframeWithRelativeStartTime:0.3relativeDuration:0.2animations:^{
imageView.transform =CGAffineTransformMakeRotation(1*M_PI);
}];
[UIViewaddKeyframeWithRelativeStartTime:0.5relativeDuration:0.4animations:^{
imageView.transform =CGAffineTransformMakeRotation(1.5*M_PI);
}];
[UIViewaddKeyframeWithRelativeStartTime:0.9relativeDuration:0.1animations:^{
imageView.transform =CGAffineTransformMakeRotation(2*M_PI);
}];
}completion:^(BOOL finish){
}];
说一说第二种方法
就是设置 uiview的layer
使用基础动画
CABasicAnimation *rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumbernumberWithFloat:M_PI*2.0];
rotationAnimation.duration = 1;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1;
[_layeraddAnimation:rotationAnimationforKey:@"rotationAnimation"];
目前就是这两种 还有很多 方法 持续更新