uiview 动画旋转rolata

来源:互联网 发布:淘宝水果模特 编辑:程序博客网 时间:2024/04/29 18:14

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