iOS简单动画效果:闪烁、移动、旋转、路径、组合
- #define kDegreesToRadian(x) (M_PI * (x) / 180.0)
- #define kRadianToDegrees(radian) (radian*180.0)/(M_PI)
- - (void)viewDidLoad
- {
- [superviewDidLoad];
- self.title = @"测试动画";
- self.view.backgroundColor = [UIColorlightGrayColor];
- myTest1 = [[UILabelalloc]initWithFrame:CGRectMake(10, 100, 60, 40)];
- myTest1.backgroundColor = [UIColorblueColor];
- myTest1.textAlignment = NSTextAlignmentCenter;
- myTest1.text = @"张明炜";
- myTest1.textColor = [UIColorwhiteColor];
- [self.viewaddSubview:myTest1];
- //闪烁效果。
- // [myTest1.layer addAnimation:[self opacityForever_Animation:0.5] forKey:nil];
- ///移动的动画。
- // [myTest1.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]] forKey:nil];
- //缩放效果。
- // [myTest1.layer addAnimation:[self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT] forKey:nil];
- //组合动画。
- // NSArray *myArray = [NSArray arrayWithObjects:[self opacityForever_Animation:0.5],[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]],[self scale:[NSNumber numberWithFloat:1.0f] orgin:[NSNumber numberWithFloat:3.0f] durTimes:2.0f Rep:MAXFLOAT], nil];
- // [myTest1.layer addAnimation:[self groupAnimation:myArray durTimes:3.0f Rep:MAXFLOAT] forKey:nil];
- //路径动画。
- // CGMutablePathRef myPah = CGPathCreateMutable();
- // CGPathMoveToPoint(myPah, nil,30, 77);
- // CGPathAddCurveToPoint(myPah, nil, 50, 50, 60, 200, 200, 200);//这里的是控制点。
- // [myTest1.layer addAnimation:[self keyframeAnimation:myPah durTimes:5 Rep:MAXFLOAT] forKey:nil];
- //旋转动画。
- [myTest1.layeraddAnimation:[selfrotation:2degree:kRadianToDegrees(90) direction:1repeatCount:MAXFLOAT] forKey:nil];
- }
- #pragma mark === 永久闪烁的动画 ======
- -(CABasicAnimation *)opacityForever_Animation:(float)time
- {
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];//必须写opacity才行。
- animation.fromValue = [NSNumber numberWithFloat:1.0f];
- animation.toValue = [NSNumber numberWithFloat:0.0f];//这是透明度。
- animation.autoreverses = YES;
- animation.duration = time;
- animation.repeatCount = MAXFLOAT;
- animation.removedOnCompletion = NO;
- animation.fillMode = kCAFillModeForwards;
- animation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];///没有的话是均匀的动画。
- return animation;
- }
- #pragma mark =====横向、纵向移动===========
- -(CABasicAnimation *)moveX:(float)time X:(NSNumber *)x
- {
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];///.y的话就向下移动。
- animation.toValue = x;
- animation.duration = time;
- animation.removedOnCompletion = NO;//yes的话,又返回原位置了。
- animation.repeatCount = MAXFLOAT;
- animation.fillMode = kCAFillModeForwards;
- return animation;
- }
- #pragma mark =====缩放-=============
- -(CABasicAnimation *)scale:(NSNumber *)Multiple orgin:(NSNumber *)orginMultiple durTimes:(float)time Rep:(float)repertTimes
- {
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
- animation.fromValue = Multiple;
- animation.toValue = orginMultiple;
- animation.autoreverses = YES;
- animation.repeatCount = repertTimes;
- animation.duration = time;//不设置时候的话,有一个默认的缩放时间.
- animation.removedOnCompletion = NO;
- animation.fillMode = kCAFillModeForwards;
- return animation;
- }
- #pragma mark =====组合动画-=============
- -(CAAnimationGroup *)groupAnimation:(NSArray *)animationAry durTimes:(float)time Rep:(float)repeatTimes
- {
- CAAnimationGroup *animation = [CAAnimationGroupanimation];
- animation.animations = animationAry;
- animation.duration = time;
- animation.removedOnCompletion = NO;
- animation.repeatCount = repeatTimes;
- animation.fillMode = kCAFillModeForwards;
- return animation;
- }
- #pragma mark =====路径动画-=============
- -(CAKeyframeAnimation *)keyframeAnimation:(CGMutablePathRef)path durTimes:(float)time Rep:(float)repeatTimes
- {
- CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
- animation.path = path;
- animation.removedOnCompletion = NO;
- animation.fillMode = kCAFillModeForwards;
- animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
- animation.autoreverses = NO;
- animation.duration = time;
- animation.repeatCount = repeatTimes;
- return animation;
- }
- #pragma mark ====旋转动画======
- -(CABasicAnimation *)rotation:(float)dur degree:(float)degree direction:(int)direction repeatCount:(int)repeatCount
- {
- CATransform3D rotationTransform = CATransform3DMakeRotation(degree, 0, 0, direction);
- CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
- animation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
- animation.duration = dur;
- animation.autoreverses = NO;
- animation.cumulative = NO;
- animation.fillMode = kCAFillModeForwards;
- animation.repeatCount = repeatCount;
- animation.delegate = self;
- return animation;
- }
iOS简单动画效果:闪烁、移动、旋转、路径、组合的更多相关文章
- iOS各种动画效果
ios各种动画效果 最普通动画: //开始动画 [UIView beginAnimations:nil context:nil]; //设定动画持续时间 [UIView setAnimationDu ...
- 原生JS封装简单动画效果
原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...
- ios开发之--简单动画效果的添加
记录一个简单的动画效果,自己写的,很简单,仅做记录. 附一个demo的下载地址: https://github.com/hgl753951/hglTest.git 代码如下: 1,准备 BOOL _i ...
- iOS添加到购物车的简单动画效果
#pragma mark - 添加到购物车的动画效果 // huangyibiao - (void)addAnimatedWithFrame:(CGRect)frame { // 该部分动画 以sel ...
- iOS 转盘动画效果实现
代码地址如下:http://www.demodashi.com/demo/11598.html 近期公司项目告一段落,闲来无事,看到山东中国移动客户端有个转盘动画挺酷的.于是试着实现一下,看似简单,可 ...
- iOS的动画效果类型及实现方法
实现iOS漂亮的动画效果主要有两种方法, 一种是UIView层面的, 一种是使用CATransition进行更低层次的控制, 第一种是UIView,UIView方式可能在低层也是使用CATransit ...
- iOS 帧动画之翻转和旋转动画
记录两个比较简单的动画,一个是翻转的动画,一个是旋转的动画. 旋转动画: 1 [UIView animateWithDuration:3 animations:^{ if (formView) { f ...
- iOS开动画效果之──实现 pushViewController 默认动画效果
在开发中,视图切换会常常遇到,有时我们不是基于导航控制器的切换,但实际开发中,有时需要做成push效果,下面将如何实现push和pop 默认动画效果代码实例: 一.push默认动画效果 CATrans ...
- jQuery之简单动画效果
1. show()显示动画 语法:show(speed,callback) Number/String,Function speend为动画执行时间,单位为毫秒.也可以为slow",&quo ...
随机推荐
- python 单下划线/双下划线使用总结
文章转自:http://blog.csdn.net/pfm685757/article/details/45918575
- 使用Java内置的Http Server构建Web应用
一.概述 使用Java技术构建Web应用时, 我们通常离不开tomcat和jetty之类的servlet容器,这些Web服务器功能强大,性能强劲,深受欢迎,是运行大型Web应用的必备神器. 虽然Jav ...
- 用Vue开发一个实时性时间转换功能,看这篇文章就够了
前言 最近有一个说法,如果你看见某个网站的某个功能,你就大概能猜出背后的业务逻辑是怎么样的,以及你能动手开发一个一毛一样的功能,那么你的前端技能算是进阶中高级水平了.比如咱们今天要聊的这个话题:如何用 ...
- 转- 在ubuntu下安装Nginx
一. 安装包安装 1.1 安装Nginx $sudo apt-get install nginx Ubuntu安装之后的文件结构大致为: 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经 ...
- cs231n spring 2017 lecture2 Image Classification 听课笔记
1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...
- POJ2503-Babelfish-二分
Babelfish Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 44545 Accepted: 18803 Descr ...
- hdu_2604Queuing(快速幂矩阵)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 Queuing Time Limit: 10000/5000 MS (Java/Others) ...
- 程序员听到bug后的N种反应,太形象了
程序员的世界里,不止有代码,还有bug,bug,bug 当出现bug时,程序员们的反应是怎样的呢?
- 布隆(Bloom)过滤器 JAVA实现
前言 Bloom过滤器,通过将字符串映射为信息指纹从而节省了空间.Bloom过滤器的原理为,将一个字符串通过一定算法映射为八个Hash值,将八个Hash值对应位置的Bitset位进行填充.在进行校验的 ...
- cesium编程入门(五)绘制形状
通过Entity添加形状 先来看一个添加立方体的例子 var viewer = new Cesium.Viewer('cesiumContainer'); var redBox = **viewer. ...