文档章节

CoreAnimation 笔记

哈哈8066
 哈哈8066
发布于 2015/11/26 12:55
字数 395
阅读 23
收藏 0

1、CABasicAnimation

第一步:创建图层

    CALayer *layer = [CALayer layer];
    layer.position = CGPointMake(100, 100);
    layer.bounds = CGRectMake(0, 0, 100, 100);
    layer.backgroundColor = [UIColor redColor].CGColor;
    [self.view.layer addSublayer:layer];
    self.layer = layer;


第二步:设置动画

    // 1.创建动画对象
    CABasicAnimation *anim = [CABasicAnimation animation];
    
    // 2.设置动画对象
    // keyPath决定了执行怎样的动画, 调整哪个属性来执行动画
    anim.keyPath = @"position";
    //    anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
    // toValue : 最终变成什么值
    // byValue : 增加多少值
    anim.byValue = [NSValue valueWithCGPoint:CGPointMake(200, 300)];
    anim.duration = 2.0;
    
    /**让图层保持动画执行完毕后的状态**/
    // 动画执行完毕后不要删除动画
    anim.removedOnCompletion = NO;
    // 保持最新的状态
    anim.fillMode = kCAFillModeForwards;
    
    // 3.添加动画
    [self.layer addAnimation:anim forKey:nil];


tips:

/**让图层保持动画执行完毕后的状态**/

    // 动画执行完毕后不要删除动画

    anim.removedOnCompletion = NO;

    // 保持最新的状态

    anim.fillMode = kCAFillModeForwards;




2、CAKeyframeAnimation

方法一:设置 “anim.values”

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


方法二:设置“CGMutablePathRef”路径

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;
    CGPathRelease(path);
    
    // 设置动画的执行节奏
    // kCAMediaTimingFunctionEaseInEaseOut : 一开始比较慢, 中间会加速,  临近结束的时候, 会变慢
    anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    anim.delegate = self;
    
    [self.redView.layer addAnimation:anim forKey:nil];


tips:监听动画执行过程


anim.delegate = self;

#pragma mark - 动画的代理方法
#pragma mark 动画开始的时候调用
- (void)animationDidStart:(CAAnimation *)anim
{
    NSLog(@"animationDidStart");
}
#pragma mark 动画结束的时候调用
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
    NSLog(@"animationDidStop");
}






    


© 著作权归作者所有

共有 人打赏支持
下一篇: Shell笔记
哈哈8066
粉丝 3
博文 43
码字总数 11632
作品 0
浦东
程序员
私信 提问
Neubla3中的骨骼动画: CoreAnimation子系统

最早的一个设计是把动作代码分成两个子系统. CoreAnimation作为低层系统, 只为更复杂的高层动作系统提供简单而又高性能的”砖瓦”. 高层Animation子系统以CoreAnimation为基础, 提供了像抽像...

长平狐
2012/11/12
120
0
iOS动画开发之四——核心动画编程(CoreAnimation)

iOS动画开发之四——核心动画编程(CoreAnimation) 一、引言 前几篇博客详细介绍了有关UIView层的动画使用与相关的效果,然而这些动画是UIKit为我们封装好的核心动画层的方法,通过这些方法,...

珲少
2015/07/28
0
0
CoreAnimation应用和使用方法

iPhone应用程序之CoreAnimation应用和使用方法是本文要介绍的内容,CoreAnimation是苹果对用户界面动画的封装,它的framework是QuartzCore.framework。使用时需要将这个库添加的工程,我们一起...

于赟
2012/11/18
0
0
iOS Animation创建及使用

iOS 实现的基本动画 头尾式动画 2.block动画的方法 iOS显示关键帧动画 关键帧动画 动画的创建和使用 第一种:UIView 代码块调用 第二种:UIView [begin commit]模式 第三种:使用Core Animat...

奋拓达
2018/05/23
0
0
Nebula3中的骨骼动画: Animation子系统

就像CoreAnimation 中提到的, Nebula2动作系统急需一个全新的设计和编码. 在《龙歌》的开发和另一个针对表情动画的研究中, 我们不得不为这个天生不足的系统加入新的特性. 最后系统勉强可以正...

长平狐
2012/11/12
55
0

没有更多内容

加载失败,请刷新页面

加载更多

MaxCompute,基于Serverless的高可用大数据服务

摘要:2019年1月18日,由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学,本次技术沙龙上,阿里巴巴高级技术专家吴永明为大家...

zhaowei121
29分钟前
4
0
记录一下安装使用MySql8.0以及允许Navicat11远程连接

记录一下安装使用MySql8.0以及允许Navicat11远程连接 2018年05月11日 23:51:39 爱不离此 阅读数:4455 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_352...

linjin200
29分钟前
2
0
redis结合springboot 无法注入redisTemplate问题

redis结合springboot 无法注入redisTemplate问题 报错: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.......

BraveLN
31分钟前
2
0
Redis缓存雪崩、缓存穿透、热点Key解决方案和分析

缓存穿透 缓存系统,按照KEY去查询VALUE,当KEY对应的VALUE一定不存在的时候并对KEY并发请求量很大的时候,就会对后端造成很大的压力。 (查询一个必然不存在的数据。比如文章表,查询一个不存...

watermelon11
32分钟前
2
0
ThinkSNS + 后端2019年1月更新播报

社交软件系统ThinkSNS+界面一览图 研发发布版本号:2.1.5 和 2.2.2 更新发布时间:2019年1月29日 社交系统ThinkSNS+后端本次主要更新内容:搜索地区体验优化、优化收藏页面排版、修正读取兑换...

ThinkSNS官方帐号
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部