美文网首页
iOS 核心动画

iOS 核心动画

作者: 雪中夜归人 | 来源:发表于2019-05-14 10:55 被阅读0次

前言

  iOS中的动画主要是指 Core Animation 框架,该框架是跨 iOS 与 OS X 平台的主要负责图形渲染与动画的基础框架。苹果对 Core Animation 框架进行很好的封装,使我们开发者很简单的设置几个属性,就能实现绘制工作。

Core Animation 框架

  在iOS中所有的动画看似是发生在 UIView上 的,但是其实都是发生在 UIView 的 CALayer 上。
  UIView 与 CALayer 的区别主要就是:UIView 负责与用户交互,CALayer 负责图形的绘制。
  CALayer 是默认修改属性支持隐式动画的,在给 UIView 的 Layer 做动画的时候,View 作为 Layer 的代理,Layer 通过 actionForLayer:forKey:向 View请求相应的 action(动画行为)
  UIView的layer内部维护着三份 layer tree,分别是 presentLayer Tree(呈现动画树),modeLayer Tree(模型树), Render Tree (渲染树)。在做 iOS动画的时候,我们修改动画的属性,在动画的其实是 Layer 的 presentLayer 的属性值,而最终展示在界面上的其实是提供 View的modelLayer。

Core Animation框架的简介

  Core Animation框架(以下简称CA框架)由CAAnimation(父类NSObject)以及其子类构成。


CAAnimation以及其子类关系图.png

CA框架属性介绍

CABasicAnimation(基础动画)
  • fromValue:动画的开始值(一般可以不设置)
  • toValue:动画的结束值
  • beginTime:动画的开始时间
  • duration:动画的持续时间
  • repeatCount:动画的重复执行次数
  • fileMode:动画的运行场景
  • isRemovedOnCompletion:完成后是否删除动画
  • autoreverses:执行的动画是否按照原动画返回执行
CAKeyFrameAnimation(关键帧动画)
  • path:关键帧动画的执行路径
  • values:关键帧动画中的关键点数组
CAAnimationGroup(动画组)
  • animations:动画组
CAAnimation
  • delegate:动画代理(包含了动画开始执行以及结束完成两个代理方法)
  • timingFunction:控制动画的显示节奏,系统提供五种值选择,分别是:
    1.kCAMediaTimingFunctionDefault( 默认,中间快)
    2.kCAMediaTimingFunctionLinear (线性动画)
    3.kCAMediaTimingFunctionEaseIn (先慢后快 慢进快出)
    4.kCAMediaTimingFunctionEaseOut(先块后慢快进慢出)
    5.kCAMediaTimingFunctionEaseInEaseOut(先慢后快再慢)
CATranstion(转场动画)
  • type:过渡动画的动画类型,系统提供了多种过渡动画,分别是:
    1:fade (淡出 默认)
    2: moveIn (覆盖原图)
    3: push (推出)
    4: fade (淡出 默认)
    5:reveal (底部显示出来)
    6: cube (立方旋转)
    7: suck (吸走)
    8:oglFlip (水平翻转 沿y轴)
    9: ripple (滴水效果)
    10: curl (卷曲翻页 向上翻页)
    11: unCurl (卷曲翻页返回 向下翻页)
    12: caOpen (相机开启)
    13: caClose (相机关闭)
  • subtype : 过渡动画的动画方向, 系统提供了四种,分别是:
    1.fromLeft( 从左侧)
    2.fromRight (从右侧)
    3.fromTop (有上面)
    4.fromBottom (从下面)

CA框架项目实际应用

  • 基础动画(CABasicAnimation)

基础动画主要提供了对于CALayer对象中的可变属性进行简单动画的操作。比如:位移、旋转、缩放、透明度、背景色等。
基础动画根据 keyPath 来区分不同的动画,, 系统提供了多个类型,如: 
transform.scale (比例转换)、
transform.scale.x、transform.scale.y、
 transform.rotation(旋转) 、
transform.rotation.x(绕x轴旋转)、transform.rotation.y(绕y轴旋转)、transform.rotation.z(绕z轴旋转)、
opacity (透明度)、
margin、
backgroundColor(背景色)、
cornerRadius(圆角)、
borderWidth(边框宽)、
bounds、
contents、
contentsRect、
cornerRadius、
frame、
hidden、
mask、
masksToBounds、
shadowColor(阴影色)、
shadowOffset、shadowOpacity、shadowOpacity, 
在使用时候, 需要根据具体的需求选择合适的.

2019年5月14日更新至此!

相关文章

网友评论

      本文标题:iOS 核心动画

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