iOS动画
来源:互联网 发布:java 简单代码实例 编辑:程序博客网 时间:2024/04/28 15:16
动画
在iOS中动画实现技术主要是:Core Animation。
Core Animation负责所有的滚动、旋转、缩小和放大以及所有的iOS动画效果。其中UIKit类通常都有animated:参数部分,它可以允许是否使用动画。
Core Animation还与Quartz紧密结合在一起,每个UIView都关联到一个CALayer对象,CALayer是Core Animation中的图层。图层,图层是动画发生的地方,CALayer总是与UIView关联,通过layer属性访问。
动画有三种形式
1 隐式动画,这是一种最简单的动画,不用设置定时器,不用考虑线程或者重画。
2 显式动画,是一种使用CABasicAnimation创建的动画,通过CABasicAnimation,可以更明确地定义属性如何改变动画。
显式动画时候,不必定义CALayer的变化,也不必执行它们,而是通过CABasicAnimation逐个定义动画。其中每个动画都含有各自的duration、repeatCount等属性。然后,使用addAnimation:forKey:方法分别将每个动画应用到层中。
CATransform3DMakeAffineTransform函数是将仿射变换矩阵变成Core Animation使用的Transform3D类型的矩阵。
3 关键帧动画,这是一种更复杂的显式动画类型,这里可以定义动画的起点和终点,还可以定义某些帧之间的动画。
关键帧动画中可以定义路径,把这些路径放入到CGMutablePathRef中与CG中的很相似。
动画使用常用方法两种方法1 UIView,2 CATransition。
1 UIView动画是应用在一个view上面的。
UIKit直接将动画集成到UIView类中,实现简单动画的创建过程。UIView类定义了几个内在支持动画的属性声明,当这些属性发生改变时,视图为其变化过程提供内建的动画支持。
执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码包装到一个代码块中。
UIView方式可能在低层也是使用CATransition进行了封装,它只能用于一些简单的、常用的效果展现。
//动画1 UIView
//步骤1设置动画
//UIView开始动画,第一个参数是动画的标识,第二个参数附加的应用程序信息用来传递给动画代理消息
[UIViewbeginAnimations:nilcontext:nil];
[UIViewsetAnimationDuration:0.7];//动画持续时间
[UIViewsetAnimationDelegate:self];//设置动画的回调函数,设置后可以使用回调方法
//步骤2设置动画曲线
[UIViewsetAnimationCurve:UIViewAnimationCurveEaseInOut];
//步骤3设置动画效果
[UIViewsetAnimationTransition:UIViewAnimationTransitionCurlDownforView:self.viewcache:YES];//5下翻
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];//6上翻
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];//7左转
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];//8右转
//编写相关代码,实现动画
//UI对象大小,位置,形状变化;或当前视图控制器中视图的切换;或不同视图控制器之前的切换等
//步骤4提交动画
[UIViewcommitAnimations];
2 CATransition动画是应用在一个layer上面的。
CATransition比较强大,一般可以使用CATransition模拟UIView的动画。
CATransition进行更低层次的控制。
使用
//动画2 CATransition
步骤1 导入framework(QuartzCore.framework、CoreData.framework),导入方法(点击左侧栏工程文件名-设置窗口-Build Phases-Link Binary With Libraries-点击“+”-查找对应的framkwork-点击“add”确定添加)
步骤2 导入头文件://导入动画效果头文件
#import<QuartzCore/QuartzCore.h>
步骤3设置动画
CATransition *animation = [CATransitionanimation];
animation.delegate =self;
animation.duration =1.3;
animation.timingFunction =UIViewAnimationCurveEaseInOut;
animation.fillMode=kCAFillModeForwards;
步骤4动画过渡效果
animation.type = kCATransitionFade;//1淡化-交叉淡化过渡(不支持过渡方向)
animation.type = kCATransitionPush;//2推挤-新视图把旧视图推出去
animation.type = kCATransitionReveal;//3揭开-将旧视图移开,显示下面的新视图
animation.type = kCATransitionMoveIn;//4覆盖-新视图移到旧视图上面
animation.type = @"cube";//9立方体-立方体翻滚效果
animation.type = @"suckEffect";//10吸收-收缩效果,如一块布被抽走(不支持过渡方向)
animation.type = @"oglFlip";//11翻转-上下左右翻转效果
animation.type =@"rippleEffect";//12波纹-滴水效果(不支持过渡方向)
animation.type = @"pageCurl";//13翻页-向上翻页效果
animation.type = @"pageUnCurl";//14反翻页-向下翻页效果
animation.type = @"cameraIrisHollowOpen";//15镜头开-相机镜头打开效果(不支持过渡方向)
animation.type = @"cameraIrisHollowClose";//16镜头关-相机镜头关上效果(不支持过渡方向)
步骤5动画方向
animation.subtype = kCATransitionFromLeft;//从左向右
animation.subtype = kCATransitionFromBottom;//从下向上
animation.subtype = kCATransitionFromRight;//从右向左
animation.subtype = kCATransitionFromTop;//从上向下
步骤6提交动画
//要令一个转场生效,组要将动画添加到将要变为动画视图所附着的图层。例如在两个视图控制器之间进行转场,那就将动画添加到窗口的图层中:
//[[self.view.superview layer]addAnimation:myTransition forKey:nil ];
//如果是将控制器内的子视图转场到另一个子视图,就将动画加入到视图控制器的图层。还有一种选择,用视图控制器内部的视图作为替代,将你的子视图作为主视图的子图层:
//[ self.view.layer addAnimation:myTransition forKey:nil ];
//如果你使用的是导航控制器,可以将动画加到导航控制器的视图图层中。
//[ navigationController.view.layer addAnimation:myTransition forKey:nil ];
如:视图控制器切换
[self.view.superview.layeraddAnimation:animation forKey:@"animation"];
[selfpresentViewController:showView animated:YEScompletion:nil];
- iOS动画 核心动画
- iOS动画 UIView动画
- iOS动画 CATransition动画
- iOS 动画 UIView动画
- iOS动画-基础动画
- ios 动画
- IOS动画
- Ios 动画
- ios动画
- IOS 动画
- iOS动画
- ios动画
- ios动画
- iOS动画
- iOS 动画
- ios 动画
- iOS 动画
- iOS 动画
- AVPlayer音量
- 老牌系统:雨一直下win7主题
- DotNET平台下添加JumpList
- MFC对话框
- iOS-Artwork-Extractor
- iOS动画
- android -h 'xcopy' 不是内部或外部命令
- 2013年6月工作小结-- 项目终验前的忙碌
- Linux操作系统是如何工作的?破解操作系统的奥秘
- VS2012 ddk驱动编译与虚拟机联机调试设置(已更新)
- uva 10201 Adventures in Moving - Part IV
- Invalidate与WM_PAINT
- 让WAMP支持ASP
- Java内存优化和性能优化的几点建议