TrAnimate 1.0.4

TrAnimate 1.0.4

测试已测试
语言语言 Obj-CObjective C
许可证 BSD 2.0
发布日期最新发布2014 年 12 月

Kristian Trenskow 维护。



TrAnimate 1.0.4

(目前正在编写编程指南)

TrAnimate iOS 动画库

TrAnimate 是一个专为简化复杂动画创建设计的 iOS 动画库,无需使用 Core Animation。

设置 TrAnimate

通过复制源文件

有三种方式将 TrAnimate 集成到您的项目中。首先是将所有源代码复制到当前项目中,并通过添加以下内容包含头文件。

#import "TrAnimate.h"

通过 Git 使用框架或模块

作为另一种选择,您可以使用 git 的子模块功能和 Xcode 的子项目功能将 TrAnimate 集成到您的项目中 -特别是如果您使用 git。这还允许您在 trunk 分支更新时随时更新 TrAnimate。简单的拉取(pull)即可从 TrAnimate 仓库获取最新和最伟大的功能。

将子模块和子项目添加到您的项目中

打开终端,转到 Xcode 项目根目录,然后输入以下内容。

git submodule add https://github.com/trenskow/TrAnimate.git TrAnimate`.

这将把 TrAnimate 作为子项目添加,并从 Github 下载所有源代码。

接下来,将 TrAnimate.xcodeproject(现在位于项目的 TrAnimate 子文件夹中)拖入 Xcode 中的项目源代码树。

作为模块添加(iOS 8)

只需将其作为模块添加到源代码中,通过在源代码中导入模块即可。

@import TrAnimate
作为静态链接框架添加(iOS 7 及以下)
  • 转到 Xcode 的应用程序设置。
    • 选择“构建阶段”选项卡。
      • TrAnimate Static 添加到“目标依赖”中,并将 libTrAnimate Static.a 添加到链接的可执行文件。
    • 选择“构建设置”选项卡。
      • 将以下内容添加到“头文件搜索路径”。
        • $(SRCROOT)/TrAnimate

现在您在需要 TrAnimate 时导入主头文件。

#import <TrAnimate/TrAnimate.h>

使用 TrAnimate

介绍

使用 TrAnimate 的淡入动画示例

[TrFadeAnimation animate:aView
                duration:.3f
                   delay:.0f
               direction:TrFadeAnimationDirectionIn];

以上代码将立即使 aView 渐变。

另一个示例可以是

[TrPositionAnimation animate:aView
                    duration:1.0
                       delay:.0f
                  toPosition:CGPointMake(100.0, 100.0)
                      anchor:TrPositionAnimationAnchorAutomatic
                       curve:[TrCurve easeInBounce]
                  completion:^(BOOL finished) {
                      NSLog(@"Move in complete!")
                  }];

这将把 aView 移动到位置 100.0, 100.0。曲线指定 aView 应反弹。最后,当动画完成时,完成块记录 Move is complete!

可用的动画

每个动画都有特殊的创建方法。请在每个动画的文档中查看如何创建它们。

TrPositionAnimation

将视图从一个位置移动到另一个位置,不影响视图的大小。

TrFadeAnimation

淡入视图。视图可以淡入或淡出。

TrOpacityAnimation

更改视图的不透明度。

TrScaleAnimation

从可选的起始值缩放视图到结束值。

TrRotateAnimation

围绕一个轴旋转视图,从可选的起始值旋转到结束值。

TrLayerAnimation

这是为使用CALayer进行所有动画需求带来的。TrLayerAnimation 接受一个 CALayer 和一个键路径,并对它进行动画处理。

TrDirectAnimation

TrDirectAnimation 无需使用 Core Animation 进行动画,因此当您想要动画化 Core Animation 不支持的对象的属性时非常有用。一个例子可以是 UIScrollViewcontentOffset 或甚至 AVAudioPlayervolume 属性。

曲线

预定义曲线

所有动画都支持自定义动画曲线。曲线是用块实现的,但也存在一些内置曲线,这些曲线是从 jQuery UI 中借用来的。曲线用 TrCurve 类表示,它也包含内置曲线。

内置曲线是

linear

easeInQuad easeOutQuad easeInOutQuad

easeInCubic easeOutCubic easeInOutCubic

easeInQuart easeOutQuart easeInOutQuart

easeInQuint easeOutQuint easeInOutQuint

easeInSine easeOutSine easeInOutSine

easeInExpo easeOutExpo easeInOutExpo

easeInCirc easeOutCirc easeInOutCirc

easeInElastic easeOutElastic easeInOutElastic

easeInBack easeOutBack easeInOutBack

easeInBounce easeOutBounce easeInOutBounce

自定义曲线

可以通过继承 TrCurve 并重写 transform: 方法实现自定义曲线 - 或者可以使用如下所示的块创建自定义曲线。

[TrCurve curveWithBlock:^(double t) {
    return (-1.0 * cos(t * M_PI_2) - 1.0);
}];

上面的代码是实现 [TrCurve easeInSine] 曲线的实际代码。参数t代表介于0.0和1.0之间的值。动画块必须返回一个 double

同样,可以像下面那样直接在动画中使用自定义曲线。

[TrRotateAnimation animateView:aView
                      duration:.3f
                         delay:.0f
                       toAngle:M_PI_4
                          axis:TrRotateAnimationAxisZ
                         curve:[TrCurve curveWithBlock:^(double t) {
                             return t / 2.0;
                         }]];

上面的代码将 aView 从零弧度旋转到 M_PI_4。但提供的曲线实际上会减半 endAngle,因为 t 被除以 2

动画组

动画组允许您分组动画,并确定何时运行哪些动画。它允许您将其他动画组分组,确实是链接动画的强大工具。

(本说明将更新以更详细地说明动画组如何工作)

关于 TrAnimate

TrAnimate是为了满足创建复杂动画而无需频繁使用复杂核心动画设置的需求而创建的。而且还为了适应核心动画缺乏自定义插值和曲线。

开发状态

TrAnimate已从其起源的应用程序中分离出来,并作为开源项目提供。该应用程序是KREAFUNK应用程序 - 在App Store上下载。

TrAnimate并不完整。它正在不断开发以添加更多功能。过渡功能目前正在实施中。

贡献

总是欢迎的贡献。特别是针对专业的动画。如果你有任何希望添加到库中的补充,请创建一个pull request。

致谢

所有曲线都来自jQuery UI库。jQuery和jQuery UI库被设计用于高质量浏览器交互和动画,并提供丰富的动画曲线集。

说明

TrAnimate需要ARC。