CoreAnimation动画(CALayer动画)
#pragma mark - CABasicAnimation动画
- (IBAction)basicAnimation:(UIButton *)sender { // 1.创建动画对象
CABasicAnimation *basicAnimation = [CABasicAnimation animation]; // 2.告诉layer层需要执行什么样的动画【后面设置的内容为CALayer的相关属性】
basicAnimation.keyPath = @"position"; // 3.告诉layer从哪里来,要到哪里去
basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(, )];
basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(, )]; // 如果要实现移动后不回到原来的位置
basicAnimation.removedOnCompletion = NO;
basicAnimation.fillMode = kCAFillModeForwards; // 保存动画状态的内容 // 4.设置动画持续的时长
basicAnimation.duration = 6.0f; // 5.将要执行的动画添加到CALayer上
[self.imgView.layer addAnimation:basicAnimation forKey:@"basic"]; /***************** 翻转效果 *********************/
CABasicAnimation *basicAnimation1 = [CABasicAnimation animation];
basicAnimation1.keyPath = @"transform"; // 设置的翻转到的地方
basicAnimation1.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, , , )]; basicAnimation1.duration = 4.0f;
[self.imgView.layer addAnimation:basicAnimation1 forKey:@"aaa"]; // 根据key移除动画
[self.imgView.layer removeAnimationForKey:@"basic"];
}
#pragma mark - CAKeyFrameAnimation动画
- (IBAction)CAKeyFrameAnimation:(UIButton *)sender { // 1.创建对象
CAKeyframeAnimation *keyFrameAnimation = [CAKeyframeAnimation animation]; // 2.设置动画轨迹
keyFrameAnimation.keyPath = @"transform.rotation"; // 3.设置旋转角度(弧度的计算公式:度数 / 180 * M_PI)
keyFrameAnimation.values = @[@(- / 180.0 * M_PI), @( / 180.0 * M_PI), @( / 180.0 * M_PI)]; // 4.设置时长
keyFrameAnimation.duration = 3.0f; // 5.添加动画到layer层
[self.imgView.layer addAnimation:keyFrameAnimation forKey:@"ccc"]; }
#pragma mark - CAAnimationGroup动画
- (IBAction)CAAnimationGroup:(UIButton *)sender { // 平移动画
CABasicAnimation *basic1 = [CABasicAnimation animation];
basic1.keyPath = @"transform.translation.y";
basic1.toValue = @(); // 翻转动画
CABasicAnimation *basic2 = [CABasicAnimation animation];
basic2.keyPath = @"transform.scale";
basic2.toValue = @(0.5); // 旋转动画
CABasicAnimation *basic3 = [CABasicAnimation animation];
basic3.keyPath = @"transform.rotation";
basic3.toValue = @(M_PI); // 创建管理各个动画的动画组
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = @[basic1, basic2, basic3];
group.duration = 5.0f;
[self.imgView.layer addAnimation:group forKey:@"ddd"];
}
#pragma mark - CASpringAnimation动画
- (IBAction)CASpringAnimation:(UIButton *)sender { CASpringAnimation *springAnimation = [CASpringAnimation animation];
springAnimation.keyPath = @"transform.scale";
springAnimation.fromValue = @;
springAnimation.toValue = @0.25;
springAnimation.duration = 3.0f;
[self.imgView.layer addAnimation:springAnimation forKey:@"eee"];
}
CoreAnimation动画(CALayer动画)的更多相关文章
- CoreAnimation (CALayer 动画)
CoreAnimation基本介绍: CoreAnimation动画位于iOS框架的Media层 CoreAnimation动画实现需要添加QuartzCore.Framework CoreAnima ...
- CoreAnimation中layer动画闪烁的原因及解决
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 网上有一段Core Animation层动画的例子,是将vie ...
- 实现UIView的无限旋转动画(非CALayer动画)
实现UIView的无限旋转动画(非CALayer动画) 效果: 素材: 源码: // // ViewController.m // Animation // // Created by YouXian ...
- CALayer动画的暂停,恢复,以及结束时候的回调
CALayer动画的暂停,恢复,以及结束时候的回调 源码如下: // // ViewController.m // AnimationLineView // // Created by YouXian ...
- iOS开发UI篇—核心动画(关键帧动画)
转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...
- iOS开发UI篇—核心动画(基础动画)
转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...
- iOS:核心动画之动画组CAAnimationGroup
CAAnimationGroup——动画组 动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行 属性说明: ...
- Core Animation 动画的使用:关键帧动画、基础动画、动画组
首先让我们了解下什么是 Core Animation,Core Animation 为核心动画,他为图形渲染和动画提供了基础.使用核心动画,我们只需要设置起点.终点.关键帧等一些参数,剩下的工作核心动 ...
- ios基础动画、关键帧动画、动画组、转场动画等
概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...
随机推荐
- 编写高质量JS代码的68个有效方法(五)
No.21.使用apply方法通过不同数量的参数调用函数 Tips: 使用apply方法自定一个可计算的参数数组来调用可变参数的函数 使用apply方法的第一个参数给可变参数的方法提供一个接收者 // ...
- DDD:聊天笔记
聚合跟和实体 聚合根是实体. 实体有生命周期,使用标识进行跟踪. 聚合根是全局标识,由仓储或其它服务负责其生命周期. 实体是局部标识,由聚合根负责其生命周期. 为什么能应对复杂度? 纵向.横向.时间维 ...
- Zookeeper集群部署
一. 部署前的准备工作 保证各个主机之间能够正常通信,最好是在同一网段. 修改host文件,加入IP和主机名的映射.方法为修改/etc/hosts和etc/hostname文件,不同的Linux发行版 ...
- sql server 脚本创建数据库邮件
sql server 脚本创建数据库邮件代码: --脚本创建数据库邮件 --1.开启数据库邮件 RECONFIGURE WITH OVERRIDE GO RECONFIGURE WITH OVERRI ...
- Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
一.Spring IOC 容器支持自动装配 Bean,所谓自动装配是指,不需要通过 <property> 或 <constructor-arg> 为 Bean 的属性注入值的过 ...
- spring.net中的IOC和DI-初使用
前面准备:下载spring.net并解压 下载地址:spring.net下载地址 Ioc:控制反转 DI:依赖注入 一.IOC(控制反转) 1.新建一个控制台程序springTest, ...
- C#利用NPOI导出Excel类(简单版)
代码: using System.Data; using System.IO; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; namespac ...
- 分享一个Winform里面的HTML编辑控件Zeta HTML Edit Control,汉化附源码
我们知道,Web开发上有很多HTML的编辑控件,如FCKEditor.CKEditor.kindeditor等等,很多都做的很好,而虽然Winform里面有WebBrowser控件,但是默认这个控件是 ...
- 在Winform开发框架中,利用DevExpress控件实现数据的快速录入和选择
在实际的项目开发过程中,有好的控件或者功能模块,我都是想办法尽可能集成到我的WInform开发框架中,这样后面开发项目起来,就可以节省很多研究时间,并能重复使用,非常高效方便.在我很早之前的一篇博客& ...
- (一)JAVA项目(非web项目)部署到windows服务器运行
[转]http://blog.csdn.net/tracy19880727/article/details/11205063 一般服务器运行的几乎都是web项目,今天遇到一个问题,把写好的Java项目 ...