博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CAKeyframeAnimation简单实用
阅读量:5103 次
发布时间:2019-06-13

本文共 2058 字,大约阅读时间需要 6 分钟。

//

//  MJViewController.m
//  06-核心动画02-CAKeyframeAnimation
//
//  Created by apple on 14-4-21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//
#import "MJViewController.h"
@interface MJViewController ()
@property (weak, nonatomic) IBOutlet UIView *redView;
@end
@implementation MJViewController
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    CAKeyframeAnimation *anim = [CAKeyframeAnimation animation];
    
    anim.keyPath = @"position";
    anim.removedOnCompletion = NO;
    anim.fillMode = kCAFillModeForwards;
    anim.duration = 2.0;
    
    // 创建一个路径
    CGMutablePathRef path = CGPathCreateMutable();
    
    
    // 添加一个圆到这个路径
    CGPathAddEllipseInRect(path, NULL, CGRectMake(100, 100, 200, 200));
    anim.path = path;
    
    // 释放这个路径(Create出来的对象都需要释放)
    CGPathRelease(path);
    
    // 设置动画的执行节奏
    // kCAMediaTimingFunctionEaseInEaseOut : 一开始比较慢, 中间会加速,  临近结束的时候, 会变慢
    anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    
    // 监听动画的执行
    anim.delegate = self;
    
    [self.redView.layer addAnimation:anim forKey:nil];
}
#pragma mark - 动画的代理方法
#pragma mark 动画开始的时候调用
- (void)animationDidStart:(CAAnimation *)anim
{
    NSLog(@"animationDidStart");
}
#pragma mark 动画结束的时候调用
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
    NSLog(@"animationDidStop");
}
- (void)testMove
{
    //    CABasicAnimation  fromValue --> toValue
    
    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)];
    
    anim.duration = 2.0;
    
    
    anim.removedOnCompletion = NO;
    anim.fillMode = kCAFillModeForwards;
    
    [self.redView.layer addAnimation:anim forKey:nil];
}
@end

转载于:https://www.cnblogs.com/xiaokanfengyu/p/4037124.html

你可能感兴趣的文章
.NET设计模式简析
查看>>
SQL高效率语句(二)
查看>>
web优化之-js动态合并 动态压缩 去掉js重复引用 js缓存 js延迟加载
查看>>
201704221048_《ES6模板字符串》
查看>>
【BZOJ-2595】游览计划 斯坦纳树
查看>>
Ubuntu——配置JDK
查看>>
导弹拦截版
查看>>
jzoj5195. 【NOIP2017提高组模拟7.3】A(递推,打表)
查看>>
robot framework接口测试之一-完整的测试用例
查看>>
IOS开发:使用lipo合并armv7,i386,armv7s库文件
查看>>
使用 udev 高效、动态地管理 Linux 设备文件
查看>>
Java8函数之旅(四) --四大函数接口
查看>>
django环境处理
查看>>
记一次企业级爬虫系统升级改造(三):文本分析与数据建模规则化处理
查看>>
javascript window对象
查看>>
Android定制组件之Widget之昨天今天明天
查看>>
JSON
查看>>
JavaScript中的匿名函数及函数的闭包
查看>>
【JMeter】选项-函数助手对话框应用举例
查看>>
2012年实习总结
查看>>