OC - 24.CABasicAnimation
2024-10-12 03:13:07
概述
简介
- CABasicAnimation是抽象类CAPropertyAnimation的子类,可以直接使用
- CABasicAnimation又称基本动画,从fromValue到toValue按照指定的动画属性执行动画
注意事项
- 一个动画对象可以同时添加到多个图层上
- 对动画的配置必须放在动画添加到图层之前,否则不会呈现指定的动画效果
基本动画常用的属性
CABasicAnimation的属性
- fromValue(id),执行动画属性的起始值。若不指定,则以该属性当前的值作为fromValue
- toValue(id),执行动画属性的目的值
- byValue(id),步进值
CAMediaTiming协议的属性
- duration(CFTimeInterval),单次动画的执行时间
- repeatCount(float),重复次数
- autoreverses(BOOL),是否恢复到动画开始状态(以动画的方式)
基本动画的执行步骤
- 创建CABasicAnimation动画对象
- 指定执行动画的keyPath属性
- 设置动画起始值与目的值
- 配置动画的其他属性
- 将动画添加到要执行动画的图层上
通过基本动画模拟心跳
实现步骤
通过storyboard创建需要执行动画的控件,并拥有它们
@property (weak, nonatomic) IBOutlet UIView *redView;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;添加动画
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//创建基本动画属性
CABasicAnimation *animation = [CABasicAnimation animation];
//指定执行动画的keyPath属性
animation.keyPath = @"transform.scale";
//设置动画的起始值与目的值
animation.fromValue = @1.0;
animation.toValue = @0.8; /****配置动画的行为****/
//以动画的方式回复到fromValue
animation.autoreverses = YES;
//单次动画的执行时间,据说每分钟心跳72次
animation.duration = 60 / 72;
//动画的重复次数
animation.repeatCount = MAXFLOAT;
//取消动画反弹效果
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards; //将动画添加到图层上
[self.redView.layer addAnimation:animation forKey:nil];
[self.imageView.layer addAnimation:animation forKey:nil];
}执行效果如图:
若不设置fromValue值,程序将会有Bug,即多次点击屏幕时动画停止,如图
- 原因:若不指定fromValue,则以该属性当前的值作为fromValue
若不取消反弹效果,动画结束,会瞬间回到fromValue状态,如图
若指定autoreverses为YES,会以动画方式回到fromValue状态,如图
最新文章
- 【记录】T-SQL 分组排序中取出最新数据
- void 0作用
- apache https 伪静态
- load()方法---------jQuery动态加载html
- 使用dig查询dns解析
- 1920.154s 0.309s 30817
- 源码安装nginx以及平滑升级
- R中根据匹配原则将一列拆分为几列的方法
- 1017: [JSOI2008]魔兽地图DotR - BZOJ
- django入门教程(下)
- 【转】通用分页用户控件(DataGrid,DataList,Repeater都可以用它来分页)
- 基于WebSocketSharp 的IM 简单实现
- ROS机器人程序设计(原书第2版)补充资料 (捌) 第八章 导航功能包集入门 navigation
- Netty源码—六、tiny、small内存分配
- halcon形态学运算
- DevC++ return 1 exit status
- hql和sql练习题
- P3694 邦邦的大合唱站队
- linux系统日志__ratelimit: N callbacks suppressed
- ubuntu server vsftpd 虚拟用户及目录
热门文章
- 最大流算法---Edmond-Karp
- oracle数据库根据不同条件给同一字段修改相应的值:
- P1082丛林探险
- 【原】ubuntu下Mysql的HA(corosync+pacemaker+drbd)
- linux-kernel/CodingStyle
- MongoDB简单操作
- Eclipse 为jar包加入 Java Source和Javadoc(如何向Eclipse中导入源码和doc)
- liststack——链表栈(procedure)
- JAVA学习.java.sql.date 与java.util.date以及gettime()方法的分析
- java如何遍历hashMap