GSTween 0.1.2

GSTween 0.1.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最新发布2014年12月

Garrit Schaap维护。



GSTween 0.1.2

Objective-C的缓动库

现在通过Cocoapods可以获取GSTween!

文档目前正在创建中,并会根据需要不断更新。

安装

即将提供说明。

源文件

静态库

要求

  • Xcode 5
  • 在iOS 6.1及以上版本进行测试
  • ARC

使用

基础

作为一个简单的示例,我们想要使用弹跳的ease out缓动将一个UIView的frame值缓动到CGRectMake(0, 0, 320, 568)

  1. 请将以下导入添加到文件顶部(我们需要导入GSTween和我们要使用的缓动,或者我们可以导入所有的缓动头文件)

    //import GSTween
    #import <GSTween/GSTween.h>
    //import all easing header files
    #import <GSTween/Easings.h>
  2. 创建一个GSTween对象来立即运行动画

    [GSTween tweenWithTarget:self time:3.0f ease:[Bounce easeOut] params:@{ @"frame": @"{{0,0},{320,568}}" }];

    在这种情况下,我们在一个UIView中创建了一个缓动。我们将目标设置为self,将动画时间设置为3秒,并添加一个弹跳ease out。接下来,我们在NSDictionary中设置参数。我们想要缓动属性frame,所以我们命名字典的键与属性同名,然后我们添加我们想要缓动的值。在这个示例中是CGRect的字符串表示形式。

目前您可以缓动任何不是只读类型CGFloatNSIntegerCGRectCGSizeCGPoint的属性。如果GSTween在目标上找不到属性,它将在日志中发出警告。

以下是一些如何将值写入字典的示例

@{ "floatValue": @4.2f };
@{ "integerValue": @42 };
@{ "rectValue": @"{{100, 100}, {200, 200}}" };
@{ @"sizeValue": @"{100, 100}" };
@{ @"pointValue": @"{42, 42}" };

此外,您可以在一个缓动对象中缓动任意多个值

[GSTween tweenWithTarget:self time:3.0f ease:[Bounce easeOut] params:@{ @"frame": @"{{0,0},{320,568}}", @"floatValue": @4.2f, @"integerValue": @42 }];

特殊属性

有一些特殊属性可以使用:`x`、`y`、`width`、`height`、`frameOrigin`、`frameSize`。如果您有一个`UIView`且没有这些名称的属性,GSTween会自动为您创建对frame属性的缓动,否则它将如您预期那样缓动您的属性。

缓动函数

您可以选择以下几种缓动函数:

  • 回弹(easeIn, easeOut, easeInOut,这里也有一些参数)
  • 弹跳(easeIn, easeOut, easeInOut)
  • 环形(easeIn, easeOut, easeInOut)
  • 立方(easeIn, easeOut, easeInOut)
  • 弹性(easeIn, easeOut, easeInOut,这里也有一些参数)
  • 指数(easeIn, easeOut, easeInOut)
  • 线性(easeNone)
  • 二次方(easeIn, easeOut, easeInOut)
  • 五次方(easeIn, easeOut, easeInOut)
  • 正弦(easeIn, easeOut, easeInOut)

这些缓动函数基于Robert Penner的方程,并受BSD许可证的许可。更多信息,请参阅此处:http://www.robertpenner.com/easing_terms_of_use.html

但您也可以创建自己的缓动函数,或将这些缓动函数用于您的项目。它们是基于块的,您可以轻松替换它们或创建新的函数

typedef CGFloat (^easeBlock)(CGFloat time);

可选参数

您可以在params字典中使用以下可选参数:

  • kGSTweenDelay (CGFloat, 默认 0.0f)
    • 为缓动动画的起始部分添加延迟
  • kGSTweenYoYo (BOOL, 默认 NO)
    • 为缓动动画添加YoYo效果,播放向前和向后
  • kGSTweenAutoStart (BOOL, 默认 YES)
    • 防止缓动自动开始,您可以使用[tween start]在需要启动缓动时进行控制
  • kGSTweenRepeat (NSInteger, 默认 0)
    • 控制缓动的重复次数,-1为无限重复,0为默认
  • kGSTweenSpeed (CGFloat, 默认 1.0f)
    • 控制缓动的播放速度或倒放(用于YoYo效果)
  • kGSTweenOnStart
    • 当缓动开始时会被调用的代码块typedef void (^tweenBlock)();
  • kGSTweenOnUpdate
    • 当缓动更新时会被调用的代码块,其中progress是目前经过的时间(从0.0f - 1.0f),value为缓动值(从0.0f - 1.0f)typedef void (^updateTweenBlock)(CGFloat progress, CGFloat value);
  • kGSTweenOnComplete
    • 当缓动结束时会被调用的代码块typedef void (^tweenBlock)();
[GSTween tweenWithTarget:self time:3.0f ease:[Bounce easeOut] params:@{ @"frame": @"{{0,0},{320,568}}", kGSTweenDelay: @2.0f, kGSTweenYoYo: @YES }];

[GSTween tweenWithTarget:self time:3.0f ease:[Bounce easeOut] params:@{ @"frame": @"{{0,0},{320,568}}", kGSTweenDelay: @2.0f, kGSTweenOnUpdate: ^(CGFloat progress, CGFloat value) {
        NSLog(@"Current progress: %f", progress);
    } }];

控制缓动

您可以开始、停止、暂停或恢复缓动动画

许可证

此库受MIT许可证的许可。有关更多信息,请参阅LICENSE.txt