JDAnimationKit 1.1

JDAnimationKit 1.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2016年12月
SwiftSwift 版本3.0
SPM支持 SPM

Juanpe CatalánDavid López Carrascal 维护。



JDAnimationKit 设计得极为易于使用。您可以使用更少的代码来对 UI 进行动画处理。该库内部使用了 POP 框架,这是一个可扩展的 iOS 和 OS X 动画库,适用于基于物理的交互。

支持的 OS 和 SDK 版本

  • 支持的构建目标 - iOS 8.3 (Xcode 7)

示例

Preview Preview

Beetripper 应用程序的截图

安装

JDAnimationKit 通过 CocoaPods 提供支持。要安装它,只需在 Podfile 中添加以下行

pod "JDAnimationKit"

注意:由于 CocoaPods/CocoaPods#4420 问题,使用 Xcode 7.1 和 CocoaPods v0.39.0 进行项目编译时存在问题。但是有一个临时的解决方案:将以下行添加到 Podfile 的末尾

post_install do |installer|
  `find Pods -regex 'Pods/pop.*\\.h' -print0 | xargs -0 sed -i '' 's/\\(<\\)pop\\/\\(.*\\)\\(>\\)/\\"\\2\\"/'`
end

要手动在应用程序中安装 JDAnimationKit 类,只需将 JDAnimationKit.swift 类文件(不需要示例文件和资源)拖放到您的项目中。另外,您还需要安装 facebook-pop。如果您正在使用 CocoaPods,则需要添加桥接头。

用法

在合适的地点导入 JDAnimationKit。

import JDAnimationKit

您可以为 CALayersUIViews(及其子类)添加动画。只需在元素后添加您想要的动画即可。

self.squareView.rotateTo(90)

如果您想同时添加多个动画。

self.squareView.rotateTo(90).moveXBy(50).opacityTo(0)

所有方法都有更多的参数和默认值。您不需要指出全部,只需指出您需要修改的参数。

self.squareView.rotateTo(90).moveXBy(50, delay: 2.0, timing: .EaseIn)

配置您的动画

您可以调整动画参数

-> duration : Double

指出动画的持续时间 (默认:0.5)

-> spring : Bool

指出是否应用物理效果以进行动画 (默认:false)

-> springConfig : JDSpringConfig (结构体)

如果 spring 属性为 true,则配置物理参数(bouncinessspeed(默认:bounciness: 10, speed: 10)

-> timing : JDTimingFunction (枚举)

动画-timing-function 指定动画的速度曲线 (默认:.None)

  • EaseIn
  • EaseOut
  • EaseInOut
  • Linear
  • None

-> delay : Double

动画执行后 X 秒。 (默认:0)

-> key : String

标识动画

锚点

锚点代表坐标的起点,是使用单位坐标系统指定的几个属性之一。Core Animation 使用单位坐标来表示属性值可能会随图层大小的变化而改变。您可以将单位坐标视为指定总可能值的一个百分比。单位坐标空间中的每个坐标都有一个范围为 0.0 到 1.0。例如,在 x 轴上,左侧边在坐标 0.0,右侧边在坐标 1.0。

Preview

您可以使用此代码设置锚点

self.squareView.changeAnchorPoint(0, y: 0)  

回调

如果您想获取动画回调或想在动画完成后运行代码,您应调用 didStopAnimation 或 didStartAnimation 块。

self.squareView.scaleTo(2, scaleY: 2).didStartAnimation { (node, key, finished, error) -> Void in

}
self.squareView.scaleTo(2, scaleY: 2).didStopAnimation { (node, key, finished, error) -> Void in

}

链式动画

self.squareView.moveXTo(100)
self.squareView.moveYTo(100)
self.squareView.moveTo(100, y: 100)
self.squareView.moveXBy(100)
self.squareView.moveYBy(50)
self.squareView.moveBy(100, deltaY: 50)
self.squareView.scaleXTo(2)
self.squareView.scaleYTo(2)
self.squareView.scaleTo(2, scaleY: 2)
self.squareView.opacityTo(0)
self.squareView.rotateTo(90)
self.squareView.changeBounds(bounds) // let bounds: CGRect
self.squareView.changeBgColor(green) // let green: UIColor

作者

许可

JDAnimationKit 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。