iOS 核心动画(3)之显式动画

作者: 市民张某 | 来源:发表于2016-12-20 15:25 被阅读112次

简介

    在一段时间内显示的内容发生变化,这个过程称之为Animation(动画)。Animation作用于图层,图层也提供了接口用于添加Animation。当需要对图层进行Animation或者需要对Animation做出更多自定义行为的时候,就必须用到显示动画。显示动画基类CAAnimation,能用的动画类只有CABasicAnimation、CAKeyframeAnimation、CATransition、CAAnimationGroup。

网上找的图

动画类介绍

1.CAAnimation

CAAnimation属性

   有两个属性需要注意下
    (1)fillMode属性的设置(要想fillMode有效,最好设置removedOnCompletion=NO)                   
              kCAFillModeRemoved 这个是默认值,也就是说当动画开始前和动画结束后,动画对layer都没有影响,动画结束后,layer会恢复到之前的状态。
             kCAFillModeForwards 当动画结束后,layer会一直保持着动画最后的状态。
             kCAFillModeBackwards 在动画开始前,只需要将动画加入了一个layer,layer便立即进入动画的初始状态并等待动画开始。
             kCAFillModeBoth 这个其实就是上面两个的合成.动画加入后开始之前,layer便处于动画初始状态,动画结束后layer保持动画最后的状态。
    (2)速度控制函数(CAMediaTimingFunction)
             kCAMediaTimingFunctionLinear(线性):匀速,给你一个相对静态的感觉。        
             kCAMediaTimingFunctionEaseIn(渐进):动画缓慢进入,然后加速离开。
             kCAMediaTimingFunctionEaseOut(渐出):动画全速进入,然后减速的到达目的地。
             kCAMediaTimingFunctionEaseInEaseOut(渐进渐出):动画缓慢的进入,中间加速,然后减速的到达目的地。这个是默认的动画行为。

2.CAPropertyAnimation
     CAPropertyAnimation是CAAnimation的子类,也是个抽象类,要想创建动画对象,应该使用它的两个子类:CABasicAnimation和CAKeyframeAnimation。两个动画子类都是对keyPath属性进行操作,通过指定CALayer的一个属性名称为keyPath(NSString类型),并且对CALayer的这个属性的值进行修改,达到相应的动画效果。比如,指定@“position”为keyPath,就修改CALayer的position属性的值,以达到平移的动画效果。但要注意,CALayer的属性必须是"Animatable"。   
 (1)CABasicAnimation(基本动画)
           随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue。keyPath内容是CALayer的可动画Animatable属性。虽然能够做很多基本的动画效果,但是有个局限性,只能让CALayer的属性从某个值渐变到另一个值,仅仅是在2个值之间渐变。

CABasicAnimation属性

            举个例子:  

CABasicAnimation  Demo

    (2)CAKeyframeAnimation(关键帧动画)
             CAKeyframeAnimation也是CAPropertyAnimation的子类,与CABasicAnimation的区别是CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值。CABasicAnimation可看做是只有2个关键帧的CAKeyframeAnimation。

CAKeyframeAnimation属性

              举个例子

CAKeyframeAnimation Demo

3.CATransition(转场动画)
   
CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果

CATransition属性

4.CAAnimationGroup
    动画组,是CAAnimation的子类,可以保存一组动画对象,将CAAnimationGroup对象加入层后,组中所有动画对象可以同时并发运行。默认情况下,一组动画对象是同时运行的,也可以通过设置动画对象的beginTime属性来更改动画的开始时间。

CAAnimationGroup属性

     举个例子

CAAnimationGroup Demo

5.额外
   
使用UIView动画函数实现转场动画----单视图
    + (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void(^)(void))animations completion:(void(^)(BOOLfinished))completion;
    使用UIView动画函数实现转场动画——双视图
    + (void)transitionFromView:(UIView*)fromView toView:(UIView*)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void(^__nullable)(BOOLfinished))completion;

相关文章

  • CALayer动画专题

    CALayer动画专题 来自《ios核心动画高级技巧》书中的一些例子总结,包含了 隐式动画 显式动画 缓冲-动画速...

  • iOS 核心动画(3)之显式动画

    简介 在一段时间内显示的内容发生变化,这个过程称之为Animation(动画)。Animation作用于图层,...

  • iOS面试题-每日十道-第四天

    一. 简述iOS动画机制 iOS分为显式动画,隐式动画 显式动画: 对一些属性做指定的自定义动画,或者创建非线性动...

  • iOS隐式动画与显式动画的区别

    请参考iOS隐式动画与显式动画的区别

  • iOS核心动画高级技巧 - 8

    iOS核心动画高级技巧 - 1iOS核心动画高级技巧 - 2iOS核心动画高级技巧 - 3iOS核心动画高级技巧 ...

  • iOS-CALayer (四)

    上一篇 : iOS-CALayer (三) 前言:继续深入学习动画,主要从隐式动画、显式动画上车。 一、隐式动画 ...

  • ios 动画-CoreAnimation geekband

    本次简单说3中动画, 隐式动画CATransaction,显式动画CABasicAnimation and CAK...

  • SwiftUI -- View 动画

    SwiftUI 中的动画有两种类型:显式动画和隐式动画。 一、显式动画 显式动画通过 withAnimation ...

  • iOS动画笔记

    在iOS各类动画效果中,习惯分为两类:隐式动画和显式动画。 隐式动画 简单的讲,由系统进行相关动画配置,执行动画效...

  • ios动画---- 显式动画

    显式动画 显式动画,它能够对一些属性做指定的自定义动画,或者创建非线性动画,比如沿着任意一条曲线移动。 属性动画 ...

网友评论

    本文标题:iOS 核心动画(3)之显式动画

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