OC - 26.CAAnimationGroup
概述
简介
- CAAnimationGroup又称组动画或动画组
- 将多个动画放到动画组中,并赋值给layer的animations属性,动画组中所有动画就会并发执行
注意事项
- 动画组中的动画不会被压缩,超出动画时长的部分将会被剪掉
- 动画组中的动画的delegate与removedOnCompletion属性将会被忽略
- 由于忽略了removedOnCompletion属性,动画结束layer会恢复到动画前的状态
CAAnimationGroup唯一的属性
animations(NSArray *)
- 存放并发执行的所有动画
- 数组元素为CAAnimation的子类
示例
效果图

实现思路
- 创建动画组对象group
- 创建多个CABasicAnimation对象,分别作用与不通过的属性
- 将多个基本动画对象赋值给group的animations属性
- 将动画组添加到要执行动画的图层上
- 通过隐式动画改变图层的背景颜色
实现步骤
- 通过storyboard创建UIView控件,并拥有它,修改它的class属性为自定义的UIView的子类
@property (weak, nonatomic) IBOutlet UIView *redView;- 创建动画组
//创建动画组对象
CAAnimationGroup *group = [CAAnimationGroup animation];
//设置动画组的执行时间
group.duration = 1.0; //创建基本动画对象,用来进行缩放
CABasicAnimation *scale = [CABasicAnimation animation];
scale.keyPath = @"transform.scale";
scale.fromValue = @1.0;
scale.toValue = @0.5; //创建基本动画对象,用来进行旋转
CABasicAnimation *rotation = [CABasicAnimation animation];
rotation.keyPath = @"transform.rotation";
rotation.toValue = @(arc4random_uniform(M_PI * 2)); //创建基本动画对象,用来修改位置
CABasicAnimation *position = [CABasicAnimation animation];
position.keyPath = @"position";
position.toValue = [NSValue valueWithCGPoint:CGPointMake(arc4random_uniform(200) + 20, arc4random_uniform(200) + 20)]; //将基本动画添加到动画组中
group.animations = @[scale, rotation, position];- 将动画组添加到要执行动画的图层上
[self.redView.layer addAnimation:group forKey:nil];- 通过隐式动画改变layer的背景色
self.redView.layer.backgroundColor = [self randomColor].CGColor;- 实现返回随机颜色的方法
//返回随机颜色
- (UIColor *)randomColor
{
return [UIColor colorWithRed:arc4random_uniform(255) / 255.0 green:arc4random_uniform(255) / 255.0 blue:arc4random_uniform(255) / 255.0 alpha:1.0];
}
OC - 26.CAAnimationGroup的更多相关文章
- OC基础(26)
集合对象的内存管理 Copy copy与内存管理 @property中的copy关键字 自定义的类实现copy操作 *:first-child { margin-top: 0 !important; ...
- OC动画:CAAnimationGroup
//贝塞尔曲线路径 UIBezierPath *movePath = [UIBezierPath bezierPath]; [movePath moveToPoint:CGPointMake(10.0 ...
- oc学习之路----APNS消息推送从证书到代码(2015年4月26号亲试可用)
前言:看这篇博客之前要准备:首先的有一个99刀的个人开发者账号或者199刀的企业开发者账号,其次你用的是apns消息推送,(本人之前四处打听有没有其他消息推送的方法:收获如下:首先如果想做到apns的 ...
- OC 面试问题汇总
OC 问题汇总: 1. 你如何理解 iOS 内存管理 1. new alloc copy retain这些对象我们都要主动的release或者 autorelease 2. 如果是类方法创建的 ...
- Swift: 比较Swift中闭包传值、OC中的Block传值
一.介绍 开发者对匿名函数应该很清楚,其实它就是一个没有名字的函数或者方法,给人直观的感觉就是只能看到参数和返回值.在iOS开发中中,它又有自己的称呼,在OC中叫Block代码块,在Swift中叫闭包 ...
- OC的总结 ***希望对大家有帮助*** ---高小杰
1. NSLog 是Foundation提供的一个输出函数,它的功能非常强大,不仅可以输出字符串,还可以输出各种对象,到后面程序还会见到大量的使用NSLog()函数. 2. N ...
- [转]OC与JS的交互详解
事情的起因还是因为项目需求驱动.折腾了两天,由于之前没有UIWebView与JS交互的经历,并且觉得这次在功能上有一定的创造性,特此留下一点文字,方便日后回顾. 我要实现这样一个需求:按照本地的CSS ...
- IOS学习之路--OC的基础知识
1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch框架 3.Xcode使用 -------------------- CocoaTouc ...
- iOS开发——高级技术OC篇&运行时(Runtime)机制
运行时(Runtime)机制 本文将会以笔者个人的小小研究为例总结一下关于iOS开发中运行时的使用和常用方法的介绍,关于跟多运行时相关技术请查看笔者之前写的运行时高级用法及相关语法或者查看响应官方文档 ...
随机推荐
- BZOJ2342: [Shoi2011]双倍回文
2342: [Shoi2011]双倍回文 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 923 Solved: 317[Submit][Status ...
- Java 交换两个变量的数值
一.参数传递方法 为解决标题问题,首先介绍参数传递方法.目前各类程序设计语言的参数传递方法主要有三种: 按值传递 按引用传递 按指针传递 其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不 ...
- poj 2288 tsp经典问题
题目链接:http://poj.org/problem?id=2288 #include<cstdio> #include<cstring> #include<iostr ...
- QUEUE——队列(procedure)
#include <stdio.h> #include <stdlib.h> #include "queue.h" int main() { int i; ...
- xCode里面设置NSZombieEnabled定位错误
打开product ->scheme->Edit scheme
- oracle sysdba用户远程登录
sysdba远程登录需要两个条件: 1.remote_login_passwordfile =exclusive时,启用口令文件,允许远程登录: 查看remote_login_passwordfile ...
- C# Timer执行方法
private void button3_Click(object sender, EventArgs e) { System.Timers.Timer t = new System.Timers.T ...
- 如何优化cocos2d程序的内存使用和程序大小:第二部分_(转)
减少你的程序的大小 把纹理的颜色位深度减少到16位,不仅可以减少内存压力,还可以有效地减少程序的体积.但是,我们还有其它方法可以更进一步地减少程序的大小. TexturePacker PNG 图片优化 ...
- ImageView类简介
4.8 图片控件 本节将要介绍的是图片控件ImageView,首先对ImageView类进行简单介绍,然后通过一个案例来说明ImageView的用法. 4.8.1 ImageView类简介 Ima ...
- 关于GCC的理解——On the understanding of the GCC
GCC 有超过100个的编译选项可用. 这些选项中的许多你可能永远都不会用到, 但一些主要的选项将会频繁用到. 很多的 GCC 选项包括一个以上的字符. 因此你必须为每个选项指定各自的连字符, 并且就 ...