OC-23.核心动画基础

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

概述简介

核心动画提供了一组非常强大的动画API,通过该组API可以高效的实现绝大部分绚丽的动画效果注意事项

核心动画的操作在子线程中执行,不会阻塞主线程核心动画直接作用与CALayer对象上,不是UIView对象上核心动画与UIView动画的区别

核心动画不会改变控件的frame属性,显示的只是一种假象UIView动画会改变控件的frame属性,显示的是控件真实地frame属性核心动画类核心动画相关类的关系图

此图来源官方文档,不知为何右下角不是CAKeyframeAnimation,而是协议。CAKeyframeAnimation为CAPRopertyAnimation的可直接使用子类CAAnimation与CAPropertyAnimation

二者都是抽象类,不可以直接使用,需要使用其子类CAAnimation可直接使用的子类,

CAAnimationGroup,组动画CATransaction,转场动画CAPropertyAnimation可直接使用的子类

CABasicAnimation,基本动画CAKeyframeAnimation,关键帧动画CAAnimation类3个重要的属性

timingFunction(CAMediaTimingFunction *),速度控制函数delegate(id),动画代理removedOnCompletion(BOOL),动画执行完毕是否将其从图层上移除CAAnimation的代理方法注意

CAAnimation的代理方法是以NSObject分类的方式实现的,如图

代理方法

动画开始时调用- (void)animationDidStart:(CAAnimation *)anim;

动画结束时调用- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;

CAMediaTiming协议常用属性如图中属性

beginTime(CFTimeInterval),开始时间duration(CFTimeInterval),单次动画的执行时间speed(float),动画速度timeOffset(CFTimeInterval),从时间偏移量timeOffset开始执行动画,并将timeOffset之前的动画压缩并拼接到尾部repeatCount(float),重复次数repeatDuration(CFTimeInterval),动画的重复时间,与repeatCount两者选择时间最短者autoreverses(BOOL),是否恢复到动画开始状态(以动画的方式)fillMode(NSString *),动画的填充模式动画的填充模式注意

若要使填充模式有效,通常设置动画的removedOnCompletion属性为NO4种模式

kCAFillModeForwards,动画结束后,layer保持动画结束的状态kCAFillModeBackwards,动画加入到layer中,立即进入动画初始状态等待动画开始执行kCAFillModeBoth,同时具备以上两种模式kCAFillModeRemoved,动画结束后,layer会恢复到原来的状态动画的速度控制函数kCAMediaTimingFunctionLinear,匀速kCAMediaTimingFunctionEaseIn,缓慢进入,加速离开kCAMediaTimingFunctionEaSEOut,全速进入,减速到达目标地点kCAMediaTimingFunctionEaseInEaseOut,缓慢进入,中途加速,减速到达目标地点kCAMediaTimingFunctionDefault,默认速度,即kCAMediaTimingFunctionEaseInEaseOut

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航