#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *redView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
} -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { CABasicAnimation *anim = [CABasicAnimation animation];
anim.keyPath = @"position.y";
anim.toValue = @; /**
* 1:CABasicAnimation:主要用于缩放,平移,转场CATransiton动画主要用于场景切换,CAKeyFrameAnimation:关键帧动画,主要用于图标抖动等
2:在CABasicAnimation中,设置anim.removedOnCompletion,目的是动画结束后不删除动画,anim.fillMode = kCAFillModeForwards;设置动画的模式,设置这两个属性,可以不让动画执行结束后,恢复到原来的位置,而是保留结束动画的状态
3:CAAnimationGroup:她会自动执行数组animations里的动画 */ // anim.removedOnCompletion = NO;
// anim.fillMode = kCAFillModeForwards;
//
// [self.redView.layer addAnimation:anim forKey:nil]; CABasicAnimation *anim2 = [CABasicAnimation animation];
anim2.keyPath = @"transform.scale";
anim2.toValue = @0.5;
// anim2.removedOnCompletion = NO;
// anim2.fillMode = kCAFillModeForwards;
// [self.redView.layer addAnimation:anim2 forKey:nil]; CAAnimationGroup *group = [CAAnimationGroup animation];
//会自动执行animations数组当中所有的动画对象
group.animations = @[anim,anim2]; group.removedOnCompletion = NO;
group.fillMode = kCAFillModeForwards;
[self.redView.layer addAnimation:group forKey:nil]; } @end

可以同时执行多个动画.

创建组动画

CAAnimationGroup *group = [CAAnimationGroup animation];

平移

CABasicAnimation *anim = [CABasicAnimation animation];

anim.keyPath = @"position.y";

anim.toValue = @400;

缩放

CABasicAnimation *scaleAnim = [CABasicAnimation  animation];

scaleAnim.keyPath = @"transform.scale";

scaleAnim.toValue = @0.5;

设置动画组属性

group.animations = @[anim,scaleAnim];

group.removedOnCompletion = NO;

group.fillMode = kCAFillModeForwards;

添加组动画

[self.redView.layer addAnimation:group forKey:nil];

使用动画组的好处,不需要每次都去添加动画,设置动画完成时的属性.

只需要把要执行的动画,添加到动画组的animations数组当中即可,

最后把组动画添加到层上面,就会自动执行数组当中的动画.

动画完成时设置的属性也只需要设置一次.

IOS开发核心动画六:动画组的更多相关文章

  1. ios开发核心动画七:核心动画与UIView动画的区别

    /** UIView与核心动画区别?(掌握) 1.核心动画只作用在layer. 2.核心动画看到的都是假像,它并没有去修改UIView的真实位置. 什么时候使用核心动画? 1.当不需要与用户进行交互, ...

  2. iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法

    本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS ...

  3. iOS开发核心语言Objective C —— 所有知识点总结

    C和OC对比 OC中主要开发在什么平台上的应用程序?答:可以使用OC开发Mac OS X平台和iOS平台的应用程序 OC中新增关键字大部分是以什么开头?答:OC中新增关键字大部分是以@开头 OC中新增 ...

  4. iOS开发核心语言Objective C —— 全部知识点总结

    本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基 ...

  5. iOS开发-核心动画随笔

    核心动画可以让View旋转,缩放,平移(主要是操作View的layer(层)属性)但是核心动画改变的位置不是真实的位置,一切都是假象所以有时候要用到其他动画,如UIView本来封装的动画,还有定时器 ...

  6. ios开发核心动画五:图标抖动效果--CAKeyframeAnimation

    #import "ViewController.h" #define angle2Rad(angle) ((angle) / 180.0 * M_PI) @interface Vi ...

  7. ios开发核心动画五:转场动画

    #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...

  8. ios开发核心动画三:隐式动画与时钟效果

    一:隐式动画 #import "ViewController.h" @interface ViewController () /** <#注释#> */ @proper ...

  9. IOS开发-UIView之动画效果的实现方法(合集)

    http://www.cnblogs.com/GarveyCalvin/p/4193963.html 前言:在开发APP中,我们会经常使用到动画效果.使用动画可以让我们的APP更酷更炫,最重要的是优化 ...

随机推荐

  1. 安卓使用WebView下载文件,安卓实现软件升级功能

    由于调用系统默认浏览器下载更新,造成用户体验非常不好,所以决定在webview中直接下载系统更新.然后直接安装. 由于要下载,所以必须用webview,联网权限这里不说了,直接写在manifafest ...

  2. LinearLayout-控件不显示

    今天Mms遇到了一个问题,布局如下             <RelativeLayout                android:layout_width="match_par ...

  3. Exploring Micro-frameworks: Spring Boot--转载

    原文地址:http://www.infoq.com/articles/microframeworks1-spring-boot Spring Boot is a brand new framework ...

  4. 1.17 Python基础知识 - 迭代器和生成器初识

    可循环迭代的对象称为可迭代对象,迭代器和生成器函数是可迭代对象. 列表解析表达式:可以简单高效处理一个可迭代对象,并生成结果列表 示例代码: [ i ** 2 for i in range(10) ] ...

  5. 解决使用SecureCRT不能连接Ubuntu的问题

    一.现象 SecureCRT是远程登陆工具及串口,可以远程进行登陆Linux服务器或者串口打印数据.但我下载安装了之后想通过SecureCRT来远程登陆我的Ubuntu,出现一直连接不上. 二.问题原 ...

  6. [TS] Implement a singly linked list in TypeScript

    In a singly linked list each node in the list stores the contents of the node and a reference (or po ...

  7. C++中引用传递与指针传递区别

    C++中引用传递与指针传递区别 在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的: 指针传递参数本质上是值传递的方式,它所传递的是一个地址值.值传递过程 ...

  8. JS截取字符串 charAt(),slice(),substring(),substr()

    1. charAt(i)输出指定下标的字母,长度为1,适用于把字符串切割成单个字符串. 2. slice() 和 substring() 都支持1-2个参数,第一个参数是开始位置,第二个参数是结束位置 ...

  9. 洛谷 P3650 [USACO1.3]滑雪课程设计Ski Course Design

    P3650 [USACO1.3]滑雪课程设计Ski Course Design 题目描述 农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度 ...

  10. [Angular] Progress HTTP Events with 'HttpRequest'

    New use case that is supported by the HTTP client is Progress events. To receive these events, we cr ...