美文网首页iOS-OC初级买不来的iOS实用技巧
动画浅析CAAnimation和CATransition

动画浅析CAAnimation和CATransition

作者: iOS小菜鸟 | 来源:发表于2015-07-28 17:22 被阅读5072次

    网址:http://blog.csdn.net/mad2man/article/details/17260887

    [_imgPic setImage:image];// 设置新的图片

    CATransition *animation = [CATransition animation];

    [animation setDuration:1.0];

    [animation setFillMode:kCAFillModeForwards];

    [animation setTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut]];

    [animation setType:@"rippleEffect"];// rippleEffect

    [animation setSubtype:kCATransitionFromTop];

    [_imgPic.layer addAnimation:animation forKey:nil];

    实现功能就是,在UIImageView换新图片的时候,做相应的动画效果!好让,UIImageView转化时,不至于太单调!

    第一句,就让我很困惑!

    CATransition *animation = [CATransition animation];

    + (id)animation方法

    创建一个CATransition对象。但是CATransition并没有animation方法?!

    @interface CATransition : CAAnimation

    原来如此,CATransition是CAAnimation的子类

    骑驴看唱本吧!

    CAAnimation类

    CAAnimation类,是一个抽象类。遵循CAMediaTiming协议和CAAction协议!

    CAAnimation is an abstract animation class. It provides the basic support for the CAMediaTiming and CAActionprotocols.

    CAMediaTiming协议

    可以调整时间,包括持续时间,速度,重复次数。

    CAAction协议

    可以通过响应动作的方式来显示动画。

    CAAnimation有很多派生类

    CATransition 提供渐变效果:(推拉push效果,消退fade效果,揭开reveal效果)。

    CAAnimationGroup 允许多个动画同时播放。

    CABasicAnimation 提供了对单一动画的实现。

    CAKeyframeAnimation 关键桢动画,可以定义行动路线。

    CAConstraint 约束类,在布局管理器类中用它来设置属性。

    CAConstraintLayoutManager 约束布局管理器,是用来将多个CALayer进行布局的.各个CALayer是通过名称来区分,而布局属性是通过CAConstraint来设置的。

    CATransaction 事务类,可以对多个layer的属性同时进行修改.它分隐式事务,和显式事务。

    CAAnimation属性

    delegate

    @property(retain) id delegate

    为CAAnimation设置代理。默认为nil。

    注意:一个CAAnimation实例,不能设置delegate为self。会引起循环引用。

    removedOnCompletion

    @property(getter=isRemovedOnCompletion) BOOL removedOnCompletion

    设置是否动画完成后,动画效果从设置的layer上移除。默认为YES。

    timingFunction

    @property(retain) CAMediaTimingFunction *timingFunction

    设置动画的“时机”效果。就是动画自身的“节奏”:比如:开始快,结束时变慢;开始慢,结束时变快;匀速;等,在动画过程中的“时机”效果。

    animation

    + (id)animation

    创建并返回一个CAAnimation实例。

    defaultValueForKey

    + (id)defaultValueForKey:(NSString *)key

    根据属性key,返回相应的属性值。

    CAAnimation实例方法

    shouldArchiveValueForKey

    - (BOOL)shouldArchiveValueForKey:(NSString *)key

    返回指定的属性值是否可以归档。

    key:指定的属性。

    YES:指明该属性可以被归档;NO:不能被归档。

    CAAnimation协议方法

    animationDidStart

    - (void)animationDidStart:(CAAnimation *)theAnimation

    动画开始时,执行的方法。

    theAnimation:正在执行动画的CAAnimation实例。

    animationDidStop:finished

    - (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag

    动画执行完成或者动画为执行被删除时,执行该方法。

    theAnimation:完成或者被删除的动画实例

    flag:标志该动画是执行完成或者被删除:YES:执行完成;NO:被删除。

    只是生硬的翻译了一下CAAnimation类。毕竟该类是其他动画的父类。

    相关文章

      网友评论

      • zombieEngineer:这个结束代理会在前后台切换的时候反复执行,有没有什么解决办法
      • 糖纸疯了:类与类之间的关系和作用写的算是挺全的,实例部分有点弱!表示很有用

      本文标题:动画浅析CAAnimation和CATransition

      本文链接:https://www.haomeiwen.com/subject/csemqttx.html