CoreAnimation 核心动画
- (void)createBaseAnimation{
//基础动画
CABasicAnimation *animation = [CABasicAnimation animation];
animation.keyPath = @"bounds";
// animation.fromValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 300, 300)];//默认为现在的状态
animation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 300, 300)];
animation.duration = 2;
animation.removedOnCompletion = NO; //动画之后保持最新
animation.fillMode = kCAFillModeForwards; //最新样式
animation.delegate = self;
[view.layer addAnimation:animation forKey:nil];
}
- (void)animationDidStart:(CAAnimation *)anim{
NSLog(@"动画开始时调用");
}
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
NSLog(@"动画结束时调用");
}
- (void)createKeyFrameAnimation{
//帧动画
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
animation.keyPath = @"position";
//路径
// CGMutablePathRef path = CGPathCreateMutable();
// CGPathAddEllipseInRect(path, nil, CGRectMake(100, 100, 200, 200));
//
// animation.path = path;
//注意:与基础动画的区别:可以设置多个点/一堆值
NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(0, 300)];
NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(300, 0)];
animation.values = @[value1,value2,value3];
//动画的执行节奏
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
animation.duration = 5;
animation.removedOnCompletion = NO; //动画之后保持最新
animation.fillMode = kCAFillModeForwards; //最新样式
[view.layer addAnimation:animation forKey:nil];
}
- (void)createTransiton{
//转场动画
CATransition *animaiton = [CATransition animation];
//动画过渡类型
animaiton.type = @"cube";
//过渡方向
animaiton.subtype = kCATransitionFade;
animaiton.duration = 3;
[view.layer addAnimation:animaiton forKey:nil];
}
- (void)createAnimationGroup{
//动画分组(旋转+缩放)
//1.旋转
CABasicAnimation *rotationAnimaiton = [CABasicAnimation animation];
rotationAnimaiton.keyPath = @"transform.rotation.z";
rotationAnimaiton.toValue = @(M_PI_4 * 3);
rotationAnimaiton.duration = 5;
rotationAnimaiton.repeatCount = MAXFLOAT;
//2.缩放
CABasicAnimation *scaleAnimation = [CABasicAnimation animation];
scaleAnimation.keyPath = @"transform";
scaleAnimation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(2, 2, 0)];
scaleAnimation.duration = 5;
//动画分组
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = @[rotationAnimaiton,scaleAnimation];
group.removedOnCompletion = NO;
group.fillMode = kCAFillModeForwards;
group.duration = 5;
[view.layer addAnimation:group forKey:nil];
}
CoreAnimation 核心动画的更多相关文章
- iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程
iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程 一.引言 二.初识CoreAnimation 三.锚点对几何属性的影响 四.Layer与View之间的关系 ...
- CoreAnimation 核心动画 / CABasicAnimation/ CAKeyframeAnimation
- (void)createBaseAnimation{ //基础动画 CABasicAnimation *animation = [CABasicAnimation animation]; anim ...
- iOS CoreAnimation 核心动画
一 介绍 一组非常强大的动画处理API 直接作用在CALAyer上,并非UIView(UIView动画) CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类 属性: dura ...
- CoreAnimation 核心动画一 (一些常用属性 和 方法)
1.常用属性: frame bounds center alpha Transition 过渡 transform 动画效果 2.常用方法: +(void)setAnimati ...
- CoreAnimation 核心动画二 锚点
锚点: anchorPoint 以锚点为中心 执行动画 (与 渔夫固定船的点时一致的) anchorPoint 默认是 0.5,0.5 (注意: 锚点 是一个比例) anchorPoint ...
- iOS 核心动画
核心动画(Core Animation) : •CoreAnimation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.fr ...
- IOS QuartzCore核心动画框架
IOS QuartzCore核心动画框架 核心动画框架 使用核心动画需要引入的框架:#import CALayer: CoreAnimation CALayer就是UIView上的图层,很多的CALa ...
- iOS学习——核心动画
iOS学习——核心动画 1.什么是核心动画 Core Animation(核心动画)是一组功能强大.效果华丽的动画API,无论在iOS系统或者在你开发的App中,都有大量应用.核心动画所在的位置如下图 ...
- 核心动画——Core Animation
一. CALayer (一). CALayer简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比方一个button.一个文本标签.一个文本输入框.一个图标等等.这些都是UIView ...
随机推荐
- JS属性操作
一.属性读操作:元素.属性名 ( 获取.找到属性值 ) 属性写操作:元素.属性名 = 新的值 ( 替换.修改属性值 ) 二.没有属性名的,也可进行读.写操作: 读操作:元素.innerHTML ...
- HDU4474
Yet Another Multiple Problem Time Limit: 40000/20000 MS (Java/Others) Memory Limit: 65536/65536 K ...
- CodeForces 333A
Secrets Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- Win下JDK的安装和简单使用教程
下载安装 一.从官网下载 1.百度jdk 然后点击像图片中指出的那个链接(www.oracle.com是java的官网) 2.下载(先点击那个 选择框 同意许可协议) 然后根据自己的电脑选择下载 64 ...
- C++ 构造函数和析构函数的调用顺序、虚析构函数的作用
构造函数和析构函数的调用顺序 构造函数的调用顺序: 当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达最底层的目标派生类的构造函数为止. 析构函数的调用书序: ...
- C++编程练习(6)----“实现简单的队列的链式存储结构“
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出.简称链队列. 实现代码如下: /* LinkQueue.h 头文件 */ #include<iostream> #defi ...
- Python自然语言处理学习笔记之信息提取步骤&分块(chunking)
一.信息提取模型 信息提取的步骤共分为五步,原始数据为未经处理的字符串, 第一步:分句,用nltk.sent_tokenize(text)实现,得到一个list of strings 第二步:分词,[ ...
- nginx : server_name localhost 和 chrome : Provisional headers are shown
问题相关问题现象:解决思路解决方案总结 问题相关 nginx : server_name localhost chrome : Provisional headers are shown 问题现象: ...
- 从C#到TypeScript - 类
总目录 从C#到TypeScript - 类型 从C#到TypeScript - 高级类型 从C#到TypeScript - 变量 从C#到TypeScript - 接口 从C#到TypeScript ...
- apche基于域名,ip,端口的配置
基于域名的服务端: 13 iptables -F 14 setenforce 0 15 ifconfig eth0 172.18.43.146 16 yum -y install bind bind- ...