iOS动画基础准备

作者: mayChunJ | 来源:发表于2016-08-04 21:22 被阅读80次

        做开发这么长时间,由于是中途转的iOS ,有许多基础知识掌握的不牢靠,所以最近决定整理整理基础知识,补补之前欠下的债,毕竟,出来混总是要还的。我专门开了一个文集,专门写动画的,个人认为动画在iOS中所占的比重还是非常大的。代码是需要积累的,知识也是需要积累的,倘若基础知识都没掌握好,我感觉到后面的路也不是很稳健。

        废话不多说了,今天先梳理一下动画的知识点。iOS 动画 我个人认为分为两类动画(只是个人观点,基础不好,如有错误请指正),1.核心动画 Core Animation 2.UIView动画 。

        今天梳理梳理核心动画的知识点:

        什么是核心动画:核心动画是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。

        Core Animation 是跨平台的,可以在iOS平台和Mac OS X。

        Core Animation的动画执行过程都是在后台操作的,不会阻塞主线程。不阻塞主线程。

         首先我们得搞清楚Core Animation结构图:

    由结构图可以看出,

        Core Animation是所有动画类的的父类,但是不能使用,必须使用它的子类。能用的子类有:CABasicAnimation(基础动画),CAKeyframeAnimation(帧动画),CATransition(转场动画),CAAnimationGroup(组动画)。以上的4个类都属于核心动画的类。

    核心动画所共有的属性:

        duration:动画持续时间

        repeatCount:重复次数

        repeatDuration:重复时间

        removedOnCompletion:YES 时动画结束后会从图层(layer)上移除,会恢复到动画运行之前的样子。为NO时反之。 不过还要设置fillMode为kCAFillModeForwards .

        fillMode:设置动画结束之后动画的属性。

        beginTime:设置动画延迟时间,延迟几秒开始。

        timingFunction:控制动画运行节奏。

         delegate:动画代理。

         CAAnimation在分类中定义了代理方法

       @interfaceNSObject

    - (void)animationDidStart:(CAAnimation *)anim;

    - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag;

    @end

       速度控制函数(CAMediaTimingFunction)

        1> kCAMediaTimingFunctionLinear(线性):匀速,给你一个相对静态的感觉

        2> kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开

        3> kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速的到达目的地

        4> kCAMediaTimingFunctionEaseInEaseOut(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。        这个是默认的动画行为。

       补充:核心动画的使用

      1.使用它需要先添加QuartzCore.framework框架和引入主头文件(iOS7不需要)

      2.初始化一个CAAnimation对象,并设置一些动画相关属性,包括opacity, position, transform, bounds, contents等(可以在API文档中搜索:CALayer Animatable Properties)

       3.通过调用CALayer的addAnimation:forKey:方法增加CAAnimation对象到CALayer中,这样就能开始执行动画了

      4.通过调用CALayer的removeAnimationForKey:方法可以停止CALayer中的动画

      CALayer核心动画与UIView动画的区别:

        UIView封装的动画执行完毕之后不会反弹。即如果是通过CALayer核心动画改变layer的位置状态,表面上看虽然已经改变了,但是实际上它的位置是没有改变的

    相关文章

      网友评论

        本文标题:iOS动画基础准备

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