Cheetah 0.4.1

Cheetah 0.4.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2016年10月
SPM支持SPM

Suguru namura维护。



Cheetah 0.4.1

  • 作者:
  • Suguru Namura

Cheetah

Cheetah是iOS上用Swift开发的动画实用工具。Cheetah可以使用简单的CADisplayLink运行循环来改变动画属性,因此可以动画化任何属性。

要求

  • iOS 8.0~
  • Swift 3.0

特性

  • 具有持续时间和延迟的动画
  • 使用绝对/相对属性进行改变
  • 并行/顺序执行
  • 缓动
  • 弹簧

代码示例

// Create view
let box = UIView(frame:CGRectMake(100,100,50,50))
box.backgroundColor = UIColor.blueColor()
view.addSubview(box)

// Move to 100px right
box.cheetah.move(100, 0).run()

Simple move

属性

Cheetah提供了几种方法来轻松地动画化属性。您也可以通过扩展CheetahProperty来动画化您自己的属性。

  • move
  • 位置(移动的绝对位置)
  • 缩放
  • 旋转
  • 旋转(旋转的绝对位置)
  • 大小
  • frame
  • alpha
  • 背景颜色
  • 文字颜色
  • 边框颜色
  • 边框宽度
  • 边框圆角
  • 自定义属性

并行执行

Cheetah会将动画属性分组并一次性执行。

view.cheetah
  .move(100, 0)
  .rotate(M_PI * 2)
  .scale(1.5)
  .run()

Parallel

顺序执行

wait将在所有放置在其之前的动画完成之前等待。它还可以接收等待秒数以开始下一个动画。

view.cheetah
  .move(100, 0).rotate(M_PI)
  .wait()
  .move(-100, 0).rotate(-M_PI)
  .wait(1.0) // <- wait 1 sec to start next animation
  .move(0, -20).duration(0.4)
  .wait()
  .move(0, 20).duration(0.4)
  .run()

Serial

持续时间和延迟

Cheetah为每个动画属性都有持续时间和延迟。

view.cheetah
  .move(100, 0).duration(1.0).delay(1.0)
  .rotate(M_PI).duration(2.0)
  .wait(1)
  .move(-100, 0).duration(0.4)
  .run()

Delay

持续时间将从放置在之前的属性中复制。

view.cheetah
  .duration(0.5)
  .move(100, 0) // <- will have 0.5 sec duration
  .rotate(M_PI) // <- will have 0.5 sec duration
  .run()

重复

要重复动画,请使用repeatCount(count: Int)

view.cheetah.rotate(M_PI_2).run().repeat(3)

要无限重复,请使用forever

view.cheetah.rotate(M_PI_2).run().forever

Repeat

缓动

Cheetah支持各种缓动函数。您还可以使用四边形贝塞尔点添加自定义缓动。

Easings

示例

view.cheetah.move(150, 150).easeInQuad.run()

支持的缓动方程

  • 线性
  • 正弦
  • 二次方
  • 四次方
  • 五次方
  • 圆形
  • 三次方
  • 指数
  • 弹力
  • 反弹
  • 弹性

Cheetah支持具有张力和摩擦参数的弹簧动力学。

Springs

示例

view.cheetah
  .move(200, 0)
  .spring()
  .run()

view.cheetah
  .move(200, 0)
  .spring(tension: 100, friction: 4)
  .run()

您可以通过扩展CheetahProperty来自定义属性进行动画。您可以参考CheetahViewProperties.swift和CheetahLayerProperties.swift。

:)