• ios常用的几个动画代码


     

     

    #import "MianViewController.h"
    #import <QuartzCore/QuartzCore.h>
    
    @interface MianViewController ()
    {
        UIImageView *shakeFeedbackOverlay;
        NSTimer *rotateTimer;
        int timeCount;
    }
    
    @end
    
    @implementation MianViewController
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        
        self.title = @"View翻转";
        
    //    shakeFeedbackOverlay.alpha = 0.0;
    //    shakeFeedbackOverlay.layer.cornerRadius = 10.0; //设置圆角半径
        
    
        shakeFeedbackOverlay = [[UIImageView alloc]initWithFrame:CGRectMake(0, 44, 320, 320)];
        shakeFeedbackOverlay.backgroundColor = [UIColor redColor];
        [self.view addSubview:shakeFeedbackOverlay];
        
        /**左右摇动**/
        /*
        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 = 20;
        [shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];
        shakeFeedbackOverlay.alpha = 1.0;
        [UIView animateWithDuration:5.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{
            shakeFeedbackOverlay.alpha = 0.0; //透明度变0则消失
        } completion:nil];
         */
        
        
        /**顺时针旋转**/
        /*
        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 = 99999;
        [shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];
        shakeFeedbackOverlay.alpha = 1.0;
        [UIView animateWithDuration:10.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{
            shakeFeedbackOverlay.alpha = 0.0;
        } completion:nil];
         */
        
        /*
        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";
        [shakeFeedbackOverlay.layer addAnimation:animation forKey:@"position"];
         */
        
        /**组合动画**/
        /*
        CABasicAnimation *flip = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
        flip.toValue = [NSNumber numberWithDouble:-M_PI];
        CABasicAnimation *scale= [CABasicAnimation animationWithKeyPath:@"transform.scale"];
        scale.toValue = [NSNumber numberWithDouble: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;
        [shakeFeedbackOverlay.layer addAnimation:group forKey:@"position"];
         */
        
        
        /*指定时间内旋转图片*/
        timeCount = 100; //动画执行100次
        [self startRotate];
        
        
    }
    
    //启动定时器旋转光圈
    
    - (void)startRotate
    {
        rotateTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                            target:self
                                                          selector:@selector(rotateGraduation)
                                                          userInfo:nil
                                                           repeats:YES];    
    }
    
    //关闭定时器
    - (void)stopTimer
    {
        if ([rotateTimer isValid])
        {
            [rotateTimer invalidate];
            rotateTimer = nil;
        }
    }
    
    //旋转动画
    - (void)rotateGraduation
    {
        timeCount--;
        if (timeCount == 0)
        {
            [self stopTimer];
            // doSomeThing //旋转完毕 可以干点别的
            timeCount = 100;
        }
        else
        {
            //计算角度 旋转
            static CGFloat radian = 150 * (M_PI * 2 / 360);
            CGAffineTransform transformTmp = shakeFeedbackOverlay.transform;
            transformTmp = CGAffineTransformRotate(transformTmp, radian);
            shakeFeedbackOverlay.transform = transformTmp;
            
        };
        
    }

     

  • 相关阅读:
    精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
    android UI 开发汇总
    Android 即时通讯 XMPP
    jquery $.ajax运行不正常我的调试
    [开发知识点] 使用JQuery 将DataTable 转化成JSON数据,前端无法处理JSON数据的注意事项
    [CSS]如何查看每个元素的盒子
    使用ip策略关闭不用的端口
    [小问题]?和@区别
    [修改远程桌面连接端口]
    [开发笔记]sql server中在单引号中包含单引号怎么办
  • 原文地址:https://www.cnblogs.com/joesen/p/3270721.html
Copyright © 2020-2023  润新知