uiview 动画旋转rolata

实现一个图片的旋转有很多种方法 ,可以直接使用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"];

目前就是这两种 还有很多 方法 持续更新




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值