zoukankan      html  css  js  c++  java
  • 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、图像顺时针旋转

        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 = [CAKeyframeAnimation animation];

        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 = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];

        animation.rotationMode = @"auto";

        [ballView.layer addAnimation:animation forKey:@"position"];

    4、组合动画 CAAnimationGroup 

        CABasicAnimation *flip = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];

        flip.toValue = [NSNumbernumberWithDouble:-M_PI];

        

        CABasicAnimation *scale= [CABasicAnimation animationWithKeyPath:@"transform.scale"];

        scale.toValue = [NSNumbernumberWithDouble:12];

        scale.duration = 1.5;

        scale.autoreverses = YES;

        

        CAAnimationGroup *group = [CAAnimationGroup animation];

        group.animations = [NSArray arrayWithObjects:flip, scale, nil];

        group.timingFunction = [CAMediaTimingFunction functionWithName: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.rotateTimerisValid])

    {

            [self.rotateTimerinvalidate];

            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]; 

    注:本文部分代码摘抄自《ios5核心框架》一书,原文有改动

  • 相关阅读:
    md5() 加密password,数据库字段长度要够(eg:varchar(30)),丢失部分数据,导致登录不上
    PHP $_SERVER (eg:REMOTE_ADDR)
    u3000是全角空格的16进制Unicode编码。 xa0
    Javascript验证Textarea中是否有值/javascript验证select是否为空(是否选择)
    /[u4e00-u9fa5]/汉字的正则匹配
    mysql_error() mysql_errno() 错误代码1064
    javascript正则表达式验证身份证
    javascript与php中的正则表达式
    停课集训 12.1
    bzoj1227 组合数学+bit
  • 原文地址:https://www.cnblogs.com/lvlin/p/2888982.html
Copyright © 2011-2022 走看看