• 核心动画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");
    }
  • 相关阅读:
    centos下使用yum 安装pip
    什么叫对象引用对象
    变量,id()
    语法错误
    闭包,装饰器
    位运算&,逻辑与and
    for XX in XX结构
    Python中的部分特殊属性
    利用键盘实现橡皮筋技术
    hdu Random Sequence
  • 原文地址:https://www.cnblogs.com/yipingios/p/4504886.html
Copyright © 2020-2023  润新知