CoreAnimation
CoreAnimation
1.CABasicAnimation
// position
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"position"];
// bounds
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"bounds.size"];
// opacity
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"opacity"];
// backgroundColor
// 景色渐变一定用CGColor
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
// transform.scale
// 以下缩放是中心缩放,若需要自定义缩放点需要设置锚点: [self.firstView.layer setAnchorPoint:CGPointMake(0, 0)];
// 一般,锚点位于图层中心{0.5,0.5},其度量是以单位方形而不是点为参照,无论图层有多大,右下角的坐标都是{1.0,1.0}
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
// transform.rotation
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; // x ,y ,z 默认是z
// transform.translation
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; // x ,y ,z 默认是x
// cornerRadius
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
// borderWidth
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"borderWidth"];
以position为例
// position
- (void)postionAnimation {
CABasicAnimation *ba = [CABasicAnimation animationWithKeyPath:@"position"];
ba.toValue = [NSValue valueWithCGPoint:self.firstView.center];
ba.duration = 0.8;
ba.delegate = self;
ba.removedOnCompletion = NO; // 动画结束后是否回到原状态,默YES.若为NO,则 fillMode 须为 kCAFillModeForwards
ba.fillMode = kCAFillModeBackwards;
ba.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; // 动画的时间节奏控制
[self.secondView.layer addAnimation:ba forKey:@"position"];
}
2.CAKeyframeAnimation
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self valuesAnimation];
}
- (void)valuesAnimation {
CAKeyframeAnimation *kf = [CAKeyframeAnimation animationWithKeyPath:@"position"];
kf.fillMode = kCAFillModeForwards;
kf.removedOnCompletion = NO;
kf.duration = 3;
kf.repeatCount = 0;
NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(0, 120)];
NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(190, 20)];
NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(20, 300)];
NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(300, 150)];
kf.values = @[value1,value2,value3,value4];
[self.firstView.layer addAnimation:kf forKey:@"valuesKeyframe"];
}
- (void)pathAnimation {
CAKeyframeAnimation *kf = [CAKeyframeAnimation animationWithKeyPath:@"position"];
kf.duration = 3.0f;
kf.removedOnCompletion = NO;
kf.fillMode = kCAFillModeForwards;
kf.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddEllipseInRect(path, NULL, CGRectMake(0, 0, 370, 300));
kf.path = path;
CGPathRelease(path);
[self.firstView.layer addAnimation:kf forKey:@"pathKeyframe"];
}
3.CATransition
/***********type:动画过渡类型***********************
kCATransitionFade 交叉淡化过渡
kCATransitionMoveIn 新视图移到旧视图上面
kCATransitionPush 新视图把旧视图推出去
kCATransitionReveal 将旧视图移开,显示下面的新视图
kCATransitionCube 立方体翻滚效果
kCATransitionOglFlip 上下左右翻转效果
kCATransitionSuckEffect 收缩效果,如一块布被抽走
kCATransitionRippleEffect 水滴效果
kCATransitionPageCurl 向上翻页效果
kCATransitionPageUnCurl 向下翻页效果
kCATransitionCameraIrisHollowOpen 相机镜头打开效果
kCATransitionCameraIrisHollowClos 相机镜头关闭效果
************************************************************/
/***********subType:动画过渡方向***********************
kCATransitionFromRight 从右边
kCATransitionFromLeft 从左边
kCATransitionFromTop 从顶部
kCATransitionFromBottom 从底部
*************************************************************/
以cameraIrisHollowOpen为例
- (void)cameraIrisHollowTransition {
CATransition *t = [CATransition animation];
t.type = @"cameraIrisHollowOpen";
// t.type = @"cameraIrisHollowClos";
t.subtype = kCATransitionFromLeft;
t.duration = 1.5;
self.firstView.backgroundColor = [UIColor colorWithRed:0.2 green:0.3 blue:0.6 alpha:1];
[self.firstView.layer addAnimation:t forKey:@"pageCurlTransition"];
}
4.CASpringAnimation 继承自CABasicAnimation
/**
* @author Jack Lee, 16-05-17 22:05:53
*
* @brief after iOS9.0
*/
- (void)springAnimation {
CASpringAnimation *spring = [CASpringAnimation animationWithKeyPath:@"bounds.size"];
spring.mass = 10; // 质量,影响图层运动时的弹簧惯性,质量越大,弹簧拉伸和压缩的幅度越大
spring.stiffness = 5000; // 刚度系数(劲度系数/弹性系数),刚度系数越大,形变产生的力就越大,运动越快
spring.damping = 100; // 阻尼系数,阻止弹簧伸缩的系数,阻尼系数越大,停止越快
spring.initialVelocity = 5; // 初始速率,动画视图的初始速度大小;速率为正数时,速度方向与运动方向一致,速率为负数时,速度方向与运动方向相反
spring.duration = spring.settlingDuration; // 结算时间 返回弹簧动画到停止时的估算时间,根据当前的动画参数估算,通常弹簧动画的时间使用结算时间比较准确
spring.toValue =[NSValue valueWithCGSize:self.firstView.bounds.size];
spring.removedOnCompletion = NO;
spring.fillMode = kCAFillModeForwards;
[self.secondView.layer addAnimation:spring forKey:@"spring"];
}
5.CAAnimationGroup
- (void)groupAnimation {
CABasicAnimation *p = [CABasicAnimation animationWithKeyPath:@"position"];
p.toValue = [NSValue valueWithCGPoint:self.firstView.center];
CABasicAnimation *o = [CABasicAnimation animationWithKeyPath:@"opacity"];
o.toValue = @(0.2);
CABasicAnimation *b = [CABasicAnimation animationWithKeyPath:@"bounds.size"];
b.toValue = [NSValue valueWithCGSize:self.firstView.bounds.size];
CAAnimationGroup *g = [CAAnimationGroup animation];
g.animations = @[p,o,b];
g.duration = 0.8;
g.removedOnCompletion = NO;
g.fillMode = kCAFillModeForwards;
g.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[self.secondView.layer addAnimation:g forKey:@"groupAnimation"];
}
CoreAnimation的更多相关文章
- iOS CoreAnimation详解(一) 有关Layer的动画
以前由于项目需要 也写了一些动画 ,但是知识不系统,很散.这段时间趁着项目完成的空袭,来跟着大神的脚步系统的总结一下iOS中Core Animation的知识点. 原博客地址:http://blog. ...
- CoreAnimation 之CATextLayer
如果你想在一个图层中显示文字,完全可以借助图层代理直接将Core Graphics写入图层的内容(这就是UILabel的精髓).如果雨果寄宿于图层的视图,直接在图层上操作,其实相当繁琐.你要为每一个显 ...
- 二、CoreAnimation之寄宿图详解
在之前的图层树中我们知道,可以使用CALayer对象创建一些有背景颜色的图层,其实使用CALayer,不仅可以利用其展示背景颜色,还可以展示图片.而这些展示内容,其实就是CALayer的寄宿图.这一节 ...
- 一、CoreAnimation之图层树详解
CoreAnimation :在字面意思为“核心动画”,但是如果您认为它仅仅是一个动画框架,那可能就要错过一些经典功能了.动画,只是CoreAnimation功能的一小部分,毕竟人家的源头是一个叫做L ...
- iOS CoreAnimation 核心动画
一 介绍 一组非常强大的动画处理API 直接作用在CALAyer上,并非UIView(UIView动画) CoreAnimation是所有动画的父类,但是不能直接使用,应该使用其子类 属性: dura ...
- ios基础篇(二十五)—— Animation动画(UIView、CoreAnimation)
Animation主要分为两类: 1.UIView属性动画 2.CoreAnimation动画 一.UIView属性动画 UIKit直接将动画集成到UIView类中,实现简单动画的创建过程.UIVie ...
- iOS关于CoreAnimation动画知识总结
一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了: ...
- CoreAnimation方法汇总
使用CoreAnimation一般分为三个部分:1.创建执行动画的CALayer 2.创建动画 3.CALayer 添加Animation CoreAnimation是以锚点为基础. CoreAnim ...
- CoreAnimation笔记
核心动画继承结构 CoreAnimation Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core Ani ...
- iOS开发之 动画CoreAnimation
http://blog.treney.com/index.php/archives/CoreAnimation.html?hmsr=toutiao.io&utm_medium=toutiao. ...
随机推荐
- HDU-2548 两军交锋
两军交锋 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- SQL Server 2008设置 开启远程连接
SQL Server 2008默认是不允许远程连接的,sa帐户默认禁用的, 如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,需要做两个部分的配置: 1,SQL Server ...
- android自动化(2)
使用monkeyrunner 自动化删除程序的时候出现如下错误 在任务管理器卸载android adb,Ok..然后再次使用的时候就出现这个问题, Try below steps: Close the ...
- input框自动填充内容背景颜色为黄色解决方法
谷歌浏览器input自动填充内容,背景色会是黄色,想改的话: input:-webkit-autofill { box-shadow: 0 0 0px 1000px white inset;} 这种方 ...
- JSP页面同时操作所有Input输入框
项目里要写个function,对页面上所有input输入框进行非空判断,对非空input全部置为readOnly,提交的时候判断是否有空白项目. var inputs=document.getElem ...
- Java中url传递中文参数取值乱码的解决方法
java中URL参数中有中文值,传到服务端,在用request.getParameter()方法,得到的常常会是乱码,这将涉及到字符解码操作. 方法一: http://xxx.do?ptname=’我 ...
- Get familiar with key Frameworks of ios
Frameworks make your life easier as an iOS Developer. They allow you to reuse code written by other ...
- SpringMVC 流程 配置 接口
SpringMVC简介 一 流程介绍 1.角色划分 前端控制器(DispatcherServlet).请求到处理器映射(HandlerMapping).处理器适配器(HandlerAdapter ...
- Spring实例化bean的三种方法
1.用构造器来实例化 <bean id="hello2" class="com.hsit.hello.impl.ENhello" /> 2.使用静态 ...
- 输入框修改placeholde颜色
::-webkit-input-placeholder { color: red; } :-moz-placeholder {/* Firefox 18- */ color: red; } ::-mo ...