美文网首页
动画相关的知识总结

动画相关的知识总结

作者: tonytong | 来源:发表于2017-10-26 19:42 被阅读0次

一、基础知识


核心动画关系图谱

二、CABasicAnimation

1.动画的属性和解释
属性 解释
duration 设置动画执行时间
repeatCount 设置动画重复次数
repeatDuration 重复的时间段
beginTime 指定动画开始的时间。设置延时的方法为CACurrentMediaTime() + 秒数的方式
timingFunction 设置动画的速度变化
fillMode 动画在开始和结束时的动作,默认值是KCAFillModeRemoved
autoreverses 动画结束时是否执行逆动画
fromValue 所改变属性的起始值
toValue 所改变属性的结束时的值
byValue 所改变属性相同起始值的改变量
2.属性值的解释
  • repeatCount:如果在swift中需要一直不断重复:Float.infinity,OC:HUGE_VALF
  • timingFunction:


kCAMediaTimingFunctionLinear--在整个动画时间内动画都是以一个相同的速度来改变。也就是匀速运动。一个线性的计时函数,同样也是CAAnimation的timingFunction属性为空时候的默认函数。线性步调对于那些立即加速并且保持匀速到达终点的场景会有意义(例如射出枪膛的子弹)。

kCAMediaTimingFunctionEaseIn:动画开始时会较慢,之后动画会加速。一个慢慢加速然后突然停止的方法。对于之前提到的自由落体的例子来说很适合,或者比如对准一个目标的导弹的发射。

kCAMediaTimingFunctionEaseOut:动画在开始时会较快,之后动画速度减慢。它以一个全速开始,然后慢慢减速停止。它有一个削弱的效果,应用的场景比如一扇门慢慢地关上,而不是砰地一声。

kCAMediaTimingFunctionEaseInEaseOut:动画在开始和结束时速度较慢,中间时间段内速度较快。创建了一个慢慢加速然后再慢慢减速的过程。这是现实世界大多数物体移动的方式,也是大多数动画来说最好的选择。如果只可以用一种缓冲函数的话,那就必须是它了。那么你会疑惑为什么这不是默认的选择,实际上当使用UIView的动画方法时,他的确是默认的,但当创建CAAnimation的时候,就需要手动设置它了。

kCAMediaTimingFunctionDefault:它和kCAMediaTimingFunctionEaseInEaseOut很类似,但是加速和减速的过程都稍微有些慢。它和kCAMediaTimingFunctionEaseInEaseOut的区别很难察觉,可能是苹果觉得它对于隐式动画来说更适合(然后对UIKit就改变了想法,而是使用kCAMediaTimingFunctionEaseInEaseOut作为默认效果),虽然它的名字说是默认的,但还是要记住当创建显式的CAAnimation它并不是默认选项(换句话说,默认的图层行为动画用kCAMediaTimingFunctionDefault作为它们的计时方法)。
使用方法:
pathAnim.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)

  • fillMode


kCAFillModeForwards:动画开始之后layer的状态将保持在动画的最后一帧,而removedOnCompletion的默认属性值是 YES,所以为了使动画结束之后layer保持结束状态,应将removedOnCompletion设置为NO。

kCAFillModeBackwards:将会立即执行动画的第一帧,不论是否设置了 beginTime属性。观察发现,设置该值,刚开始视图不见,还不知道应用在哪里。

kCAFillModeBoth:该值是 kCAFillModeForwards 和 kCAFillModeBackwards的组合状态

kCAFillModeRemoved:动画将在设置的 beginTime 开始执行(如没有设置beginTime属性,则动画立即执行),动画执行完成后将会layer的改变恢复原状。

  • 3.使用心得
    尽量不要设置removedOnCompletion = false ,因为配合CAAnimationDelegate会带来循环运用的问题,如果需要动画停留在最后的状态,可以直接设置View的center属性在动画结束的位置Point。
    之所以会出现 循环引用 因为由于CAAnimation的delegate使用的strong类型:看一下简要的说明图:


解决有时视图会闪动一下的问题,我们可以将layer的属性值设置为我们的动画最后要达到的值,然后再给我们的视图添加layer动画。

相关文章

  • 动画相关的知识总结

    一、基础知识 核心动画关系图谱 二、CABasicAnimation 1.动画的属性和解释 2.属性值的解释 re...

  • iOS-核心动画

    前言:核心动画的基础知识,包括基本动画、帧动画、转场动画相关知识。 一、核心动画(Core Animation) ...

  • CAAnimation常用属性一览表

    动画基础知识 动画的属性和解释 常用KeyPath总结 场景间过渡属性 转场动画

  • 动画(一)

    简单的总结下自己学习动画的知识: 对于UIview的动画 [UIView animateWithDuration:...

  • Flutter:一个简单的动画实现原理浅析

    Flutter 动画 本文主要介绍 Flutter 动画相关的内容,对相关的知识点进行了梳理,并从实际例子出发,进...

  • CSS动画

    今天我要总结的是有关于CSS动画相关的知识已经一些注意点。CSS中的动画离不开浏览器的渲染,首先先介绍一下浏览器的...

  • CSS Transform和动画

    最近在学习CSS动画相关的知识,于是连带着把会用到的一些知识点进行了一些整理。在此,做一下总结。 Transfor...

  • GeekBand - iOS开发实战第三周笔记

    本周主要总结一下 autolayout 相关的知识点。本来打算把CollectionView的相关知识点总结一下...

  • iOS 移动端 安全思考与总结

    iOS 移动端 安全思考 这是一遍安全知识总结的博客,并涉及相关知识的延伸,以作知识备忘和总结。 安全相关的几个方...

  • Docker网络——单host网络

    前言 前面总结了Docker基础以及Docker存储相关知识,今天来总结一下Docker单主机网络的相关知识。毋庸...

网友评论

      本文标题:动画相关的知识总结

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