序列帧动画
曾经项目里的一段源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
UIImageView * activityImageView = [[UIImageView alloc] init]; NSMutableArray *imagesList = [NSMutableArray array]; for (NSInteger i = 1; i < 3; i++) {
NSString *fileName = [NSString stringWithFormat:@"eggplant%i.png",i]; UIImage *image = [UIImage imageNamed:fileName]; [imagesList addObject:image]; } [activityImageView setAnimationImages:imagesList]; [activityImageView setAnimationDuration:0.5]; //0为无限循环 [activityImageView setAnimationRepeatCount:0]; [activityImageView startAnimating]; // [activityImageView stopAnimating];
|
UIView 动画
UIViewAnimation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
//创建一个CGAffineTransform transform对象 CGAffineTransform transform; //设置旋转度数 transform = CGAffineTransformRotate(testView.transform,M_PI/6.0); //动画开始 [UIView beginAnimations:@"rotate" context:nil ]; //动画时常 [UIView setAnimationDuration:2]; //自动反转 // [UIView setAnimationRepeatAutoreverses:YES]; [UIView setAnimationRepeatCount:3]; //添加代理 [UIView setAnimationDelegate:self]; //获取transform的值 [testView setTransform:transform]; //关闭动画 [UIView commitAnimations];
|
UIViewAnimationWithBlocks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
/* Duration 动画持续时间 delay 动画延迟时间 options 动画的节奏控制 */
[UIView animateWithDuration:5 delay:5 options:UIViewAnimationOptionCurveEaseInOut animations:^{ testView.frame = CGRectMake(100, 300, 100, 100); } completion:^(BOOL finished) {
}];
/* Damping 动画的弹力指数 Velocity 弹力的初速度 */
[UIView animateWithDuration:0.5 delay:1 usingSpringWithDamping:0.8 initialSpringVelocity:10 options:0 animations:^{ testView.frame = CGRectMake(100, 300, 100, 100); } completion:^(BOOL finished) {
}];
|
CoreAnimation
CATransition
继承关系:CATransition -> CAAnimation
1 2 3 4 5 6 7 8
|
CATransition *transition = [CATransition animation]; transition.duration = 0.5; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; //动画类型 transition.type = kCATransitionPush; //动画方向 transition.subtype = kCATransitionFromTop; [testView.layer addAnimation:transition forKey:nil];
|
CAPropertyAnimation
继承关系:CABasicAnimation,CAKeyframeAnimation -> CAPropertyAnimation -> CAAnimation
CABasicAnimation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
CABasicAnimation * animation = [CABasicAnimation animation]; animation.keyPath = @"position.y";
//运动的绝对距离 animation.fromValue = @77; animation.toValue = @455;
//运动的相对距离 // animation.byValue = @222;
animation.duration = 1; //留在最终状态 animation.fillMode = @"forwards"; //防止它被自动移除 animation.removedOnCompletion = NO; animation.timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.5 :0 :0.9 :0.7]; [testView.layer addAnimation:animation forKey:@"basic"];
|
CAKeyframeAnimation 例一
1 2 3 4 5 6 7 8 9
|
CAKeyframeAnimation * animation = [CAKeyframeAnimation animation]; animation.keyPath = @"position.x"; animation.values = @[@0,@10,@-10,@10,@0]; //指定关键帧动画发生的时间 animation.keyTimes = @[ @0, @(1 / 6.0), @(3 / 6.0), @(5 / 6.0), @1 ]; animation.duration = 0.4; //提前无需设置位置 animation.additive = YES; [testView.layer addAnimation:animation forKey:@"shake"];
|
CAKeyframeAnimation 例二
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
CGRect boundingRect = CGRectMake(-150, -150,300, 300);
CAKeyframeAnimation *orbit = [CAKeyframeAnimation animation]; orbit.keyPath = @"position"; //创建一个圆形的 CGPath 作为我们的关键帧动画的 path。 orbit.path = CFAutorelease(CGPathCreateWithEllipseInRect(boundingRect, NULL)); orbit.duration = 2; orbit.additive = YES; orbit.repeatCount = HUGE_VALF; //恒定速度 orbit.calculationMode = kCAAnimationPaced; //确保沿着路径旋转 orbit.rotationMode = kCAAnimationRotateAuto; [testView.layer addAnimation:orbit forKey:@"orbit"];
|
CAAnimationGroup 组动画
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; animation.duration = 3.; animation.fromValue = @(0.1); animation.toValue = @(1.);
CABasicAnimation *animation2 = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"]; animation2.duration = 3.; animation2.fromValue = @(1); animation2.toValue = @(2.); animation2.beginTime = 3.;
CAAnimationGroup *group = [CAAnimationGroup animation]; group.duration = 6.; group.animations = @[animation,animation2]; [testView.layer addAnimation:group forKey:nil];
|
Facebook pop 动画
POPBasicAnimation 基本动画
1 2 3 4
|
POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerScaleXY]; anim.toValue = [NSValue valueWithCGPoint:CGPointMake(2.0, 2.0)]; anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; [testView.layer pop_addAnimation:anim forKey:@"Animation"];
|
POPSpringAnimation 弹性动画
1 2 3 4 5 6 7 8 9 10 11 12
|
POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPosition]; anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(60, 350)]; anim.toValue = [NSValue valueWithCGPoint:CGPointMake(60, 150)]; anim.springBounciness = 10; anim.springSpeed = 10; //摩擦力 anim.dynamicsFriction = 0.5; //张力 anim.dynamicsTension = 250; //质量 anim.dynamicsMass = 0.7; [testView.layer pop_addAnimation:anim forKey:@"Animation"];
|
POPDecayAnimation 减速动画
1 2 3 4 5 6 7 8 9 10 11
|
POPDecayAnimation *anim = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX]; //初始速度 anim.velocity = @(200); //只有fromValue 没有toValue anim.fromValue = @(100.0); //负加速度 anim.deceleration = .998; [anim setCompletionBlock:^(POPAnimation *anim, BOOL finished) { NSLog(@"执行完毕"); }]; [testView.layer pop_addAnimation:anim forKey:@"Animation"];
|
UIViewController动画
有时间详细整理下:
http://onevcat.com/2013/10/vc-transition-in-ios7/
http://objccn.io/issue-12-3/
参考文章:
http://objccn.io/issue-12-1/
另外.....
我的愿望是.......
世界和平.........
- iOS资源整理
开发类库 http://www.code4app.com/thread-7831-1-1.html Github-iOS备忘 http://github.ibireme.com/github/list ...
- 解析 iOS 动画原理与实现
这篇文章不会教大家如何实现一个具体的动画效果,我会从动画的本质出发,来说说 iOS 动画的原理与实现方式. 什么是动画 动画,顾名思义,就是能“动”的画.人的眼睛对图像有短暂的记忆效应,所以当眼睛看到 ...
- iOS动画学习
学习一下动画,感谢以下大神的文章: UIView:基础动画.关键帧动画.转场动画 Core Animation :基础动画,关键帧动画,动画组,转场动画,逐帧动画 CALayer :CALaye ...
- (转)iOS动画Core Animation
文章转载:http://blog.sina.com.cn/s/blog_7b9d64af0101b8nh.html 在iOS中动画实现技术主要是:Core Animation. Core Animat ...
- IOS动画隐式,显式,翻页
// ViewController.m // IOS动画0817 // // Created by 张艳锋 on 15/8/17. // Copyright (c) 2015年 张艳锋. Al ...
- iOS动画原理
1. iOS动画原理 本质:动画对象(这里是UIView)的状态,基于时间变化的反应 分类:可以分为显式动画(关键帧动画和逐帧动画)和隐式动画 关键帧和逐帧总结:关键帧动画的实现方式,只需要修改某个属 ...
- iOS 动画基础
原文:http://www.cnblogs.com/lujianwenance/p/5733846.html 今天说一下有关动画的基础,希望能帮助到一些刚接触iOS动画或者刚开始学习iOS的同学, ...
- ios 动画效果CATransition笔记
初学ios开发,很多概念还不清楚,所以只有边学边做例子.又怕学了后面忘了前面,因此用自己的博客来纪录自己的学习历程,也是对自己学习不要懈怠做个监督. 刚学ios做动画效果.因为ios封装得很好,实现i ...
- IOS动画总结
IOS动画总结 一.基本方式:使用UIView类的UIViewAnimation扩展 + (void)beginAnimations:(NSString *)animationID context ...
随机推荐
- HBase 高可用性
1.Replication 之 Master <--> Master 互备 Master1 (所用zookeeper所处节点 hadoop[01-05] ): -- add_peer '1 ...
- 给曾经是phper的程序员推荐个学习网站
如果你原来是一个php程序员,你对于php函数非常了解(PS:站长原来就是一个php程序员),但是现在由于工作或者其他原因要学习python,但是python很多函数我们并不清楚,在这里我给大家推荐一 ...
- 【翻译】ASP.NET Core 文档目录
微软官方CORE 2.0正式版中文文档已经出来了,地址:https://docs.microsoft.com/zh-cn/aspnet/core/ 简介 入门 创建一个Web应用程序 创建一个Web ...
- Servlet入门(2)
1.url_pattern匹配模式 2.servlet生命周期 3.servlet线程问题 一.url_pattern 1.定义: 当浏览器发起一个url请求后,该请求发送到servlet容器的时候, ...
- iOS-plist文件的写读
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"xiaoli" ofType:@"plist ...
- 健康领域今年开始井喷了,养老地产和私人医生这两个领域目测成为下一轮BAT在健康领域布局的竞争方向
医疗行业做了六年多的时间,今年到了井喷的阶段,腾讯先是入股了丁香园,然后又一亿美金融资挂号网,春雨医生获得5000万美元的C轮融资,这是要上市的节奏.. 从互联网战略上,健康网和医疗网都是做资料刚开始 ...
- 转:maven常用命令介绍
mvn 3.0.4 创建maven项目命令 mvn archetype:generate -DgroupId=damocles-autocredit -DartifactId=damocles ...
- java 自定义序列化
pom.xml 导包 创建自己的序列化类,继承 com.fasterxml.jackson.databind.JsonSerializer<T> 抽象类 重写 serialize() 方法 ...
- P1368 工艺
题目描述 小敏和小燕是一对好朋友. 他们正在玩一种神奇的游戏,叫Minecraft. 他们现在要做一个由方块构成的长条工艺品.但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方 ...
- Codeforces Round #268 (Div. 1) 468D Tree(杜教题+树的重心+线段树+set)
题目大意 给出一棵树,边上有权值,要求给出一个1到n的排列p,使得sigma d(i, pi)最大,且p的字典序尽量小. d(u, v)为树上两点u和v的距离 题解:一开始没看出来p需要每个数都不同, ...