ThinkVerb 1.1.0

ThinkVerb 1.1.0

HJ-Cai维护。



ThinkVerb 1.1.0

  • HJ-Cai

Cocoapods Platform Language

英文介绍

ThinkVerb

ThinkVerb 是一组基于 CoreAnimation 的 API,与直接使用 CoreAnimation 相比,ThinkVerb 通过链式语法进行编程,并自动管理 CAAnimation,无需手动创建任何 CAAnimation 并将其添加到视图上。

因此,ThinkVerb 可以用非常少的代码快速生成基础动画,而且代码还相当易于阅读和维护。

目前 ThinkVerb 的功能几乎覆盖了所有基础动画,您可以轻松通过多个基础动画的组合来生成一个复杂的动画。如果使用原生代码,您可能需要编写大量代码来完成相同的工作,但使用 ThinkVerb,您则可以在几行代码内完成同样多的工作量。

使用方法

ThinkVerb 非常简单,它只有一个入口,那就是扩展 UIView 的 ThinkVerb 属性:TVAnimation。

TVAnimation 管理所有的动画单元,我们称动画单元为 Sprite,您需要做的只是:通过 TVAnimation 创建 sprite,配置 sprite,然后激活 sprite。这样,动画就被激活,UIView 将自动开始动画。

例如,如果您想永不停息地旋转您的 UIView,则只需以下一行代码:

NSString *rotation = view.TVAnimation.rotate.z.endAngle(M_PI * 2).repeat(-1).activate();

或者,如果想要为创建的 sprite 定制名称,可以写成这样:

view.TVAnimation.rotate.z.endAngle(M_PI * 2).repeat(-1).activateAs(@"rotation");

这行代码将围绕 z 轴旋转您的 UIView,旋转角度是从 UIView 当前角度旋转到 M_PI * 2,假设当前角度是 0,那就是转一圈。repeat(-1) 可以让 sprite 无限重复。最后,调用 activate() 则等于激活了该动画。

通常情况下,如果没有让 sprite 永远重复或让 sprite 在动画结束时停留,sprite 会自动被移除并释放。而如上面的例子,您需要手动移除该动画。

view.TVAnimation.clear();

上面一行代码移除 view 的所有动画,通常情况下,你调用这一行代码就够了,如果你不想对 view 的其他动画造成影响,你可以只移除相应的动画

view.TVAnimation.existSprite(rotation).stop();

如果你自己定义了名字,你可以这么做

view.TVAnimation.existSprite(@"rotation").stop();

这样,旋转会停止,sprite 会被移除并释放,否则,就算 view 释放掉了,sprite 也不会被释放,从而造成内存泄漏。

你可以通过 ThinkVerbDemo 看到更多的例子。

ThinkVerb 做复杂动画也是相当轻松的,你甚至可以写出一把手枪来

view.TVAnimation.appearance.duration(3).timing(TVTiming.extremeEaseOut).end();
view.TVAnimation.contents.drawRange(nil,[UIImage imageNamed:@"1"]).didStop(^{
    view.TVAnimation.contents.drawRange([UIImage imageNamed:@"1"],[UIImage imageNamed:@"2"]).didStop(^{
        view.TVAnimation.contents.drawRange([UIImage imageNamed:@"2"],[UIImage imageNamed:@"3"]).didStop(^{
            view.TVAnimation.contents.drawRange([UIImage imageNamed:@"3"],[UIImage imageNamed:@"2"]).activate();
        }).activate();
    }).activate();
}).activate();

安装

使用 CocoaPods

pod 'ThinkVerb'

版本信息

当前版本:1.0.8

更新

新增了弹簧动画,现在,大部分 sprite 都可以轻松添加弹簧效果了

由于 CASpringAnimation 无法支持 iOS 8.0,默认在支持 iOS 8.0 的工程里,相关 API 会被禁用

如果您想自己适配,在 Thinkverb target 的 Build Settings 里的 Preprocessor Macros 添加 TV_SPRING_ANIMATION_VERSION_CONTROL_DISABLE

复制文件

复制子 ThinkVerb 文件夹下的所有源码到您的工程

索引

  • 基础

    • move 从某个点移动 view 到另一个点

    • scale 将 view 缩放到某个倍数

    • rotate 围绕 x/y/z 轴旋转 view

    • shadow 对 shadow 的 offset/opacity/radius/color 做动画,

    • bounds 对 view 的 bounds 做动画,注意该动画效果取决于 anchorPoint

    • anchor 对 view 的 anchorPoint 做动画,单独进行不会有任何效果,需要和相关的动画组合才会有效果

    • translate 通过偏移来移动动画,基于 Transform3D,所以你可以将它应用到 sublayer 上

    • fade 淡入淡出

    • contents 对 cotnents 属性做动画,如 rect属性会对位图的渲染范围做动画,范围在 [0 0 1 1] 内

    • backgroundColor 背景变换

    • cornerRadius 圆角动画

    • border 对 view 的边框的宽度和颜色做动画

    • path 对 view 做关键帧动画,可通过贝塞尔控制点生成曲线动画

    • basicCustom 对 view 做自定义动画,可快速对自定义layer进行动画控制

  • 外观

    外观 sprite 可以用来对某个 view 配置默认参数,如果你想让某个 view 的所有 sprite 默认在动画结束时停留而不移除,你可以在生成 sprite 之前写

    view.TVAnimation.appearance.keepAlive(YES).end();
    

许可

ThinkVerb 在 MIT 许可下发布。请参见 LICENSE 获取详细信息。