版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、北京传智播客教育 北京传智播客教育 第7章-动画讲师:李明杰技术博客: 核心动画(Core Animation)Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架开发步骤:初始化一个动画对象(CAAnimation)并设置一些动画相关属性添加动画对象到层(CALayer)中,开始执行动画CALayer中很多属性都可以通过CAAnimation实现动画效果,包括:opacity、position、transform、bounds、contents等(可以在API文
2、档中搜索:CALayer Animatable Properties)通过调用CALayer的addAnimation:forKey增加动画到层(CALayer)中,这样就能触发动画了。通过调用removeAnimationForKey可以停止层中的动画Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程CAAnimation继承结构CAAnimation.timingFunction.delegateCAKeyframeAnimation.values.path.keyTimesCAAnimationGroup.animationsCAPropertyAnimation
3、.keyPathCATransition.filterCABasicAnimation.fromValue.toValueCAMediaTiming.durationCAAnimation所有动画对象的父类,负责控制动画的持续时间和速度,是个抽象类,不能直接使用,应该使用它具体的子类属性解析:(红色代表来自CAMediaTiming协议的属性)duration:动画的持续时间repeatCount:动画的重复次数repeatDuration:动画的重复时间 pletion:默认为YES,代表动画执行完毕后就从图层上移除,图形会恢复到动画执行前的状态。如果想让图层保持显示动画执行后的状态,那就设
4、置为NO,不过还要设置fillMode为kCAFillModeForwardsfillMode:决定当前对象在非active时间段的行为.比如动画开始之前,动画结束之后beginTime:可以用来设置动画延迟执行时间,若想延迟2s,就设置为CACurrentMediaTime()+2,CACurrentMediaTime()为图层的当前时间timingFunction:速度控制函数,控制动画运行的节奏delegate:动画代理CAPropertyAnimation是CAAnimation的子类,也是个抽象类,要想创建动画对象,应该使用它的两个子类:CABasicAnimation和CAKeyf
5、rameAnimation属性解析:keyPath:通过指定CALayer的一个属性名称为keyPath(NSString类型),并且对CALayer的这个属性的值进行修改,达到相应的动画效果。比如,指定”position”为keyPath,就修改CALayer的position属性的值,以达到平移的动画效果CABasicAnimationCAPropertyAnimation的子类属性解析:fromValue:keyPath相应属性的初始值toValue:keyPath相应属性的结束值随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变
6、为toValue如果fillMode=kCAFillModeForwards和 letion=NO,那么在动画执行完毕后,图层会保持显示动画执行后的状态。但在实质上,图层的属性值还是动画执行前的初始值,并没有真正被改变。比如,CALayer的position初始值为(0,0),CABasicAnimation的fromValue为(10,10),toValue为(100,100),虽然动画执行完毕后图层保持在(100,100)这个位置,实质上图层的position还是为(0,0)CAKeyframeAnimationCApropertyAnimation的子类,跟CABasicAnimatio
7、n的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值属性解析:values:就是上述的NSArray对象。里面的元素称为”关键帧”(keyframe)。动画对象会在指定的时间(duration)内,依次显示values数组中的每一个关键帧path:可以设置一个CGPathRefCGMutablePathRef,让层跟着路径移动。path只对CALayer的anchorPoint和position起作用。如果你设置了path,那么values将被忽略keyTi
8、mes:可以为对应的关键帧指定对应的时间点,其取值范围为0到1.0,keyTimes中的每一个时间值都对应values中的每一帧.当keyTimes没有设置的时候,各个关键帧的时间是平分的CABasicAnimation可看做是最多只有2个关键帧的CAKeyframeAnimationCAAnimationGroupCAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行属性解析:animations:用来保存一组动画对象的NSArray默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属
9、性来更改动画的开始时间CATransitionCAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果属性解析:type:动画过渡类型subtype:动画过渡方向startProgress:动画起点(在整体动画的百分比)endProgress:动画终点(在整体动画的百分比)UIView动画UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持执行动画所需
10、要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在UIView beginAnimations:nil context:nil和UIView commitAnimations之间常见方法解析:+ (void)setAnimationDelegate:(id)delegate设置动画代理对象,当动画开始或者结束时会发消息给代理对象+ (void)setAnimationWillStartSelector:(SEL)selector当动画即将开始时,执行delegate对象的selector,并且把beginAnimations:context:中传入的
11、参数传进selector+ (void)setAnimationDidStopSelector:(SEL)selector当动画结束时,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selectorUIView动画+ (void)setAnimationDuration:(NSTimeInterval)duration动画的持续时间,秒为单位+ (void)setAnimationDelay:(NSTimeInterval)delay动画延迟delay秒后再开始+ (void)setAnimationStartDate:(NS
12、Date *)startDate动画的开始时间,默认为now+ (void)setAnimationCurve:(UIViewAnimationCurve)curve动画的节奏控制,具体看下面的”备注”+ (void)setAnimationRepeatCount:(float)repeatCount动画的重复次数+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses如果设置为YES,代表动画每次重复执行的效果会跟上一次相反UIView动画+ (void)setAnimationTransition:(UIViewAnim
13、ationTransition)transition forView:(UIView *)view cache:(BOOL)cache设置视图view的过渡效果, transition指定过渡类型, cache设置YES代表使用视图缓存,性能较好Block动画+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void ()(void)animations completion:(v
14、oid ()(BOOL finished)completion参数解析:duration:动画的持续时间delay:动画延迟delay秒后开始options:动画的节奏控制animations:将改变视图属性的代码放在这个block中completion:动画结束后,会自动调用这个blockBlock动画+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void ()(void)animat
15、ions completion:(void ()(BOOL finished)completion参数解析:duration:动画的持续时间view:需要进行转场动画的视图options:转场动画的类型animations:将改变视图属性的代码放在这个block中completion:动画结束后,会自动调用这个blockBlock动画+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOpti
16、ons)options completion:(void ()(BOOL finished)completion方法调用完毕后,相当于执行了下面两句代码:/ 添加toView到父视图fromView.superview addSubview:toView; / 把fromView从父视图中移除fromView.superview removeFromSuperview;参数解析:duration:动画的持续时间options:转场动画的类型animations:将改变视图属性的代码放在这个block中completion:动画结束后,会自动调用这个blockUIImageView的帧动画UII
17、mageView可以让一系列的图片在特定的时间内按顺序显示相关属性解析:animationImages:要显示的图片(一个装着UIImage的NSArray)animationDuration:完整地显示一次animationImages中的所有图片所需的时间animationRepeatCount:动画的执行次数(默认为0,代表无限循环)相关方法解析:- (void)startAnimating; 开始动画- (void)stopAnimating; 停止动画- (BOOL)isAnimating; 是否正在运行动画UIActivityIndicatorView是一个旋转进度轮,可以用来告知用户有一个操作正在进行中,一般用initWithActivityIndicat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肉制品品评师安全防护水平考核试卷含答案
- 肉品分级员技能掌握能力考核试卷含答案
- 自行车与电动自行车维修工岗前实操掌握考核试卷含答案
- 输气工复测考核试卷含答案
- 网商岗前实操评优考核试卷含答案
- 中药材购销员岗位培训效果考核试卷含答案
- 纤维检验员岗中未来趋势考核试卷含答案
- 2026中国液体化工物流行业碳足迹测算方法研究
- 2026中国工业互联网安全威胁图谱与防护体系构建
- 2026药物代谢酶筛选技术在新药研发中的应用趋势报告
- 宜宾天程锂电新材有限公司2026年9月-12月自主招聘(144人)笔试模拟试题及答案解析
- 部编版七年级语文上册第一二单元综合质量检测试卷
- 2026年4月自考13140财务会计(中级)试题试题及答案
- 初中道德与法治教学中传统节日家国情怀的培育课题报告教学研究课题报告
- 2024-2025学年广东省广州市荔湾一中高一(上)期中英语试卷
- DB23-T 1167-2024 装配式聚苯模块保温系统技术规程
- 汽车电工电子技术PPT(高职)完整全套教学课件
- GB/T 778.1-2018饮用冷水水表和热水水表第1部分:计量要求和技术要求
评论
0/150
提交评论