• iOS常用动画代码


    使用前
    
            需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h"
    
    定义
    
             shakeFeedbackOverlay为UIImageView
    
    设置
    
             self.shakeFeedbackOverlay.alpha = 0.0;
    
             self.shakeFeedbackOverlay.layer.cornerRadius = 10.0; //设置圆角半径
    
    1、图像左右抖动
    
        CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    
        shake.fromValue = [NSNumber numberWithFloat:-M_PI/32];
    
        shake.toValue = [NSNumber numberWithFloat:+M_PI/32];
    
        shake.duration = 0.1;
    
        shake.autoreverses = YES; //是否重复
    
        shake.repeatCount = 4;
    
        [self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];
    
        self.shakeFeedbackOverlay.alpha = 1.0;
    
        [UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; //透明度变0则消失 } completion:nil];


    摇晃动画2:

       {

    CAKeyframeAnimation *frame=[CAKeyframeAnimation animation];

                    CGFloat left=-M_PI_2*0.125;

                    CGFloat right=M_PI_2*0.125;

                    frame.keyPath=@"postion";

                    frame.keyPath=@"transform.rotation";

                    frame.values=@[@(left),@(right),@(left)];

                    frame.duration = 0.5;

                    frame.repeatCount = 1000000;

                    [cell.layer addAnimation:frame forKey:nil];

    2、图像顺时针旋转
    
        CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    
        shake.fromValue = [NSNumber numberWithFloat:0];
    
        shake.toValue = [NSNumber numberWithFloat:2*M_PI];
    
        shake.duration = 0.8; shake.autoreverses = NO;
    
        shake.repeatCount = 1;
    
        [self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];
    
        self.shakeFeedbackOverlay.alpha = 1.0;
    
        [UIView animateWithDuration:10.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; } completion:nil];
    
    3、图像关键帧动画 
    
        CAKeyframeAnimation *animation = [CAKeyframeAnimationanimation];
    
        CGMutablePathRef aPath = CGPathCreateMutable();
    
        CGPathMoveToPoint(aPath, nil, 20, 20);
    
        CGPathAddCurveToPoint(aPath, nil, 160, 30, 220, 220, 240, 420);
    
        animation.path = aPath;
    
        animation.autoreverses = YES;
    
        animation.duration = 2;
    
        animation.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut];
    
        animation.rotationMode = @"auto";
    
        [ballView.layer addAnimation:animation forKey:@"position"];
    
    4、组合动画 CAAnimationGroup 
    
        CABasicAnimation *flip = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.y"];
    
        flip.toValue = [NSNumbernumberWithDouble:-M_PI];
    
        
    
        CABasicAnimation *scale= [CABasicAnimationanimationWithKeyPath:@"transform.scale"];
    
        scale.toValue = [NSNumbernumberWithDouble:12];
    
        scale.duration = 1.5;
    
        scale.autoreverses = YES;
    
        
    
        CAAnimationGroup *group = [CAAnimationGroupanimation];
    
        group.animations = [NSArrayarrayWithObjects:flip, scale, nil];
    
        group.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    
        group.duration = 3;
    
        group.fillMode = kCAFillModeForwards;
    
        group.removedOnCompletion = NO;
    
        [ballView.layer addAnimation:group forKey:@"position"];
    
    5、指定时间内旋转图片
    
    //启动定时器 旋转光圈
    
    - (void)startRotate
    
    {
    
        self.rotateTimer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(rotateGraduation) userInfo:nil repeats:YES];
    
    }
    
    //关闭定时器
    
    - (void)stopTimer
    
    {
    
        if ([self.rotateTimer isValid])
    
        {
    
            [self.rotateTimer invalidate]; self.rotateTimer = nil;
    
        }
    
    }
    
    //旋转动画
    
    - (void)rotateGraduation
    
    {
    
        self.timeCount--;
    
        if (self.timeCount == 0)
    
        {
    
            [self stopTimer];
    
            // doSomeThing //旋转完毕 可以干点别的
    
            self.timeCount = 25;
    
        }
    
        else
    
        {
    
            //计算角度 旋转
    
            static CGFloat radian = 150 * (M_2_PI / 360);
    
            CGAffineTransform transformTmp = self.lightImageView.transform;
    
            transformTmp = CGAffineTransformRotate(transformTmp, radian);
    
            self.lightImageView.transform = transformTmp;
    
        };
    
    }
    
    调用方法
    
    self.timeCount = 25; //动画执行25次
    
    [self startRotate]; 

    转载自:http://www.cnblogs.com/sell/archive/2013/02/01/2889013.html

  • 相关阅读:
    Linux Date命令学习笔记
    NOIP201401珠心算测验
    经典的背包问题
    简单动态规划---动态的数字三角形
    idea关于tab的设置
    idea设置字体大小
    C# 使用Queue<T>代替递归算法遍历树
    Python__用户交互,显示省市县三级联动的选择
    Python习题__购物车
    Python练习题
  • 原文地址:https://www.cnblogs.com/niit-soft-518/p/5378557.html
Copyright © 2020-2023  润新知