Objective-C的缓动库
现在通过Cocoapods可以获取GSTween!
文档目前正在创建中,并会根据需要不断更新。
即将提供说明。
作为一个简单的示例,我们想要使用弹跳的ease out缓动将一个UIView
的frame值缓动到CGRectMake(0, 0, 320, 568)
。
请将以下导入添加到文件顶部(我们需要导入GSTween和我们要使用的缓动,或者我们可以导入所有的缓动头文件)
//import GSTween
#import <GSTween/GSTween.h>
//import all easing header files
#import <GSTween/Easings.h>
创建一个GSTween对象来立即运行动画
[GSTween tweenWithTarget:self time:3.0f ease:[Bounce easeOut] params:@{ @"frame": @"{{0,0},{320,568}}" }];
在这种情况下,我们在一个UIView
中创建了一个缓动。我们将目标设置为self,将动画时间设置为3秒,并添加一个弹跳ease out。接下来,我们在NSDictionary
中设置参数。我们想要缓动属性frame,所以我们命名字典的键与属性同名,然后我们添加我们想要缓动的值。在这个示例中是CGRect的字符串表示形式。
目前您可以缓动任何不是只读类型CGFloat
、NSInteger
、CGRect
、CGSize
或CGPoint
的属性。如果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属性的缓动,否则它将如您预期那样缓动您的属性。
您可以选择以下几种缓动函数:
这些缓动函数基于Robert Penner的方程,并受BSD许可证的许可。更多信息,请参阅此处:http://www.robertpenner.com/easing_terms_of_use.html
但您也可以创建自己的缓动函数,或将这些缓动函数用于您的项目。它们是基于块的,您可以轻松替换它们或创建新的函数
typedef CGFloat (^easeBlock)(CGFloat time);
您可以在params字典中使用以下可选参数:
[tween start]
在需要启动缓动时进行控制typedef void (^tweenBlock)();
typedef void (^updateTweenBlock)(CGFloat progress, CGFloat value);
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