KRAnimationKit 0.14.1

KRAnimationKit 0.14.1

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

Josh Woomin ParkJosh Woomin Park 维护。



  • Josh Woomin Park

KRAnimationKit

KRAnimationKit 是一个使 Swift 开发者能够轻松进行动画的库。

[![CI 状态](http://img.shields.io/travis/Joshua Park/KRAnimationKit.svg?style=flat)](https://travis-ci.org/Joshua Park/KRAnimationKit) 版本 许可 平台

简介

KRAnimationKit 是一个强大的动画工具包,可以非常轻松地实现复杂动画。

JHChainableAnimations 启发,KRAnimationKit 提供了结构更清晰且更强大的动画体验。

不仅可以通过 KRAnimationKit 连接动画,还可以轻松地连接同时动画,甚至是连接多个视图的同时动画。

示例

要运行示例项目,首先克隆仓库,然后从示例目录运行pod install

要求

KRAnimationKit采用了大量的Swift 2.2语法和特性。库的语法或某些特性在Objective-C中可能不可用。

安装

KRAnimationKit可通过CocoaPods获取。要安装,只需将以下行添加到您的Podfile中

pod 'KRAnimationKit', :git => 'https://github.com/BridgeTheGap/KRAnimationKit.git'

语法

基本动画

对于不带链的简单动画

import KRAnimationKit

// Default
viewBox.animateX(50.0, duration: 1.0)

// + timing function
viewBox.animateX(50.0, duration: 1.0, function: .EaseInQuad)

// + reverse
viewBox.animateX(50.0, duration: 1.0, reverses: true)

// + repeat
viewBox.animateX(50.0, duration: 1.0, repeatCount: 10)

// + completion
viewBox.animateX(50.0, duration: 1.0) {
    print("COMPLETION")
}

参数reversesrepeatCountcompletion是默认参数,因此根据需要填写它们。

延迟动画

为了延迟动画的开始,请使用after(_: Double)。参数以秒为单位。

viewBox.after(0.5).animateY(200.0, duration: 1.0, function: .EaseInCubic)
链式动画

链式动画不仅可以应用于相同的视图中,也可以应用于不同的视图,如下所示

// Use `KRAnimation.chain()` static method
// For views, use chain functions instead of animate functions

// Basic chaining with two views
KRAnimation.chain(
    // animate viewBox
    viewBox.chainY(300.0, duration: 1.0, function: .EaseInQuad),
    viewBox.chainY(0.0, duration: 1.0, function: .EaseOutQuad),

    // animate viewBox2
    viewBox2.chainX(bottomY, duration: 1.0, function: .EaseInOutQuad)
)

// + reverses, repeatCount, completion
KRAnimation.chain(
    viewBox.chainY(bottomY, duration: 1.0, function: .EaseInBounce),
    viewBox.chainY(0.0, duration: 1.0, function: .EaseOutBounce),
    viewBox2.chainY(58.0, duration: 1.0, function: .EaseInOutBounce),
    
    reverses: false, repeatCount: 1
) {
    print("COMPLETION")
}
同时链式动画

要同时链入两个或以上的动画,只需要使用+符号,如下所示

KRAnimation.chain(
    // Simultaneously applying four animations on two different views
    viewBox.chainX(300.0, duration: 1.0) + viewBox.chainBackgroundColor(UIColor.blueColor(), duration: 1.0) + viewBox2.chainAlpha(0.5, duration: 1.0) + viewBox2.chainBackgroundColor(UIColor.cyanColor(), duration: 1.0),

    viewBox.chainX(0.0, duration: 1.0, function: .EaseInOutCubic) + viewBox.chainBackgroundColor(UIColor.redColor(), duration: 1.0),
)

时间函数

KRAnimationKit使用KRTimingFunction,这是一个将JQuery 时间函数移植到Swift的版本。

支持的时间函数如下

线性

EaseInSine EaseOutSine EaseInOutSine

EaseInQuad EaseOutQuad EaseInOutQuad

EaseInCubic EaseOutCubic EaseInOutCubic

EaseInQuart EaseOutQuart EaseInOutQuart

EaseInQuint EaseOutQuint EaseInOutQuint

EaseInExpo EaseOutExpo EaseInOutExpo

EaseInCirc EaseOutCirc EaseInOutCirc

EaseInBack EaseOutBack EaseInOutBack

EaseInElastic EaseOutElastic EaseInOutElastic

EaseInBounce EaseOutBounce EaseInOutBounce

更多解释和这些函数的视觉表示可以在Easings中找到

可动画属性

KRAnimationKit支持大多数CALayer的可动画属性,如Core Animation 编程指南中所述。

以下是目前不可用的属性列表

  • anchorPoint ?
  • backgroundFilters ?
  • compositingFilter ?
  • contents ?
  • contentsRect ?
  • filters?
  • hidden X
  • mask *
  • masksToBounds *
  • shadowPath *
  • sublayers ?
  • sublayerTransform ?
  • transform *
  • zPosition *

==============================================================

  • *: 计划支持以后
  • ?: 目前未设置为支持
  • X: 将不支持

注意事项

由于 KRAnimationKit 使用基于层的动画--它使用 CAAnimation,某些 UIView 子视图可能无法按预期工作。

UILabel

根据这篇 StackOverflow 帖子UILabel 及其 layerbackgroundColor 属性并不相同。动画仅应用于层级别,因此使用具有不同视图和层颜色的动画对 UILabel 实例进行动画可能会产生意外的行为。

Frame.size 与 Bounds.size

当进行动画时,frame.sizebounds.size 展现了不同的行为,即当 anchorPoint 设为 (0.0, 0.0) 时,frame 方式用于缩放大小变,而 bounds 则从中心缩放,即 anchorPoint(0.5, 0.5)。这种行为在 UIView 动画中使用时可观察。

这种在各钟乐汇话保留在 KRAnimationKit 中,并且 animateSize 函数动画 bounds.frame,即如果您使用 animateSize 来动画视图的大小,其中心将保持不变,而 frame.origin 属性将被影响。

如果这不是您想要的缩放动画,并且您希望以 frame.origin 作为锚点来更改大小,您可以使用 animateFrame 函数或手动将视图的 anchorPoint 属性设置为您 CGPointMake(0.0, 0.0) 并使用 animateSize 函数。

作者

Josh Woomin Park,

许可证

KRAnimationKit适用于MIT许可证。有关更多信息,请参阅LICENSE文件。