zoukankan      html  css  js  c++  java
  • 核心动画02-CAKeyframeAnimation帧动画

    CAKeyframeAnimation可以在任意多个值之间切换,比BasicAnimation多了这个功能

    在storyboard上面放置一个view,name = redView,通过给view的layer设置动画,达到动画的效果

    一、 指定一个数组,沿着这个数组走

    - (void)testMove
    {
        CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
        
        anim.keyPath = @"position";
        NSValue *v1 = [NSValue valueWithCGPoint:CGPointZero];
        NSValue *v2 = [NSValue valueWithCGPoint:CGPointMake(100, 0)];
        NSValue *v3 = [NSValue valueWithCGPoint:CGPointMake(100, 200)];
        NSValue *v4 = [NSValue valueWithCGPoint:CGPointMake(0, 200)];
        
        anim.values = @[v1,v2,v3,v4];
        //没调试出来,具体用不到,了解
        //    anim.keyTimes = @[@(0.5),@(0.25),@(0.25)];//每个帧动画具体的执行事件,表示占duration这个时间的百分之多少
        anim.duration = 2.0;
        
        //保存动画结束时候的状态,而不是回到初始的状态
        anim.removedOnCompletion = NO;
        anim.fillMode = kCAFillModeForwards;
        
        [self.redView.layer addAnimation:anim forKey:nil];
    }

    二、path为position指定一个路径,沿着这个路径走

    -(void)testMove2
    {
        CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
        
        anim.keyPath = @"position";
        anim.removedOnCompletion = NO;
        anim.fillMode = kCAFillModeForwards;
        
        CGMutablePathRef path = CGPathCreateMutable();
        
        CGPathAddEllipseInRect(path, NULL, CGRectMake(100, 100, 200, 200));
        
        anim.path = path;
        
        CGPathRelease(path);//create创建的就需要手动释放
        
        //控制动画的节奏
        //kCAMediaTimingFunctionEaseInEaseOut : 一开始比较慢,中间会加快,临近结束的时候会变慢
        anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    
        //代理,监听动画开始的时候和结束的时候做一些事情
        anim.delegate = self;//不需要遵守协议,NSObject的分类方法
        
        [self.redView.layer addAnimation:anim forKey:nil];
    }
    #pragma make - 动画的代理方法
    #pragma make 动画开始的时候调用
    -(void)animationDidStart:(CAAnimation *)anim
    {
        NSLog(@"animationDidStart");
    }
    #pragma make 动画结束的时候调用
    -(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
    {
        NSLog(@"animationDidStop");
    }
  • 相关阅读:
    JPA唯一索引更新删除的问题
    java8时间类的一些封装
    windows 下面必备软件
    YAPI工具在SpringMVC下的使用需要注意的一些问题
    软件
    sublime常用快捷键
    nio学习
    springboot集成rabbitmq的一些坑
    maven子项目的springboot配置
    RabbitMQ 学习
  • 原文地址:https://www.cnblogs.com/yipingios/p/4504886.html
Copyright © 2011-2022 走看看