RBBAnimation 0.4.0

RBBAnimation 0.4.0

测试测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2015 年 4 月

Robert Böhnke维护。



  • 作者
  • Robert Böhnke

RBBAnimationCAKeyframeAnimation 的一个子类,允许您使用块声明动画,而不是写出所有的单个关键帧。

这使您在指定动画时具有更大的灵活性,同时保持代码简洁。

它自带了一个对 CASpringAnimation 的替换,支持自定义缓动函数,如跳跃,以及钩子以允许您从头开始编写自己的动画

安装

要安装 RBBAnimation,我推荐优秀的 CocoaPods。只需将其添加到 Podfile 中

pod 'RBBAnimation', '0.4.0'

然后您就可以开始使用了!

如果您想运行打包的测试应用程序,请确保通过运行以下命令安装其依赖项

pod install

在克隆仓库后。

RBBCustomAnimation

使用 RBBCustomAnimation 通过传递 RBBAnimationBlock 来创建任意动画

Rainbow

RBBCustomAnimation *rainbow = [RBBCustomAnimation animationWithKeyPath:@"backgroundColor"];

rainbow.animationBlock = ^(CGFloat elapsed, CGFloat duration) {
    UIColor *color = [UIColor colorWithHue:elapsed / duration
                                saturation:1
                                brightness:1
                                     alpha:1];

    return (id)color.CGColor;
};

块参数是动画的当前位置以及其总持续时间。

通常,您可能会更愿意使用高级的 RBBTweenAnimation

RBBSpringAnimation

RBBSpringAnimation 是对私有 CASpringAnimation 的一个实用性替代品。指定您的弹力的质量、阻尼和刚度以及它的初始速度并观察它运行

Bouncing

RBBSpringAnimation *spring = [RBBSpringAnimation animationWithKeyPath:@"position.y"];

spring.fromValue = @(-100.0f);
spring.toValue = @(100.0f);
spring.velocity = 0;
spring.mass = 1;
spring.damping = 10;
spring.stiffness = 100;

spring.additive = YES;
spring.duration = [spring durationForEpsilon:0.01];

RBBTweenAnimation

RBBTweenAnimation 允许您从一个值动画化到另一个值,类似于 CABasicAnimation,但在值如何插值方面具有更大的灵活性。

它支持与 CAMediaTimingFunction 中获得的相同的三次贝塞尔插值,使用 RBBCubicBezier 辅助函数

Ease In Out Back

RBBTweenAnimation *easeInOutBack = [RBBTweenAnimation animationWithKeyPath:@"position.y"];

easeInOutBack.fromValue = @(-100.0f);
easeInOutBack.toValue = @(100.0f);
easeInOutBack.easing = RBBCubicBezier(0.68, -0.55, 0.265, 1.55);

easeInOutBack.additive = YES;
easeInOutBack.duration = 0.6;

但是,RBBTweenAnimation 也支持更复杂的缓动函数,如 RBBEasingFunctionEaseOutBounce

Bouncing

RBBTweenAnimation *bounce = [RBBTweenAnimation animationWithKeyPath:@"position.y"];
bounce.fromValue = @(-100);
bounce.toValue = @(100);
bounce.easing = RBBEasingFunctionEaseOutBounce;

bounce.additive = YES;
bounce.duration = 0.8;

您也可以指定自己的缓动函数从头开始

RBBTweenAnimation *sinus = [RBBTweenAnimation animationWithKeyPath:@"position.y"];
sinus.fromValue = @(0);
sinus.toValue = @(100);

sinus.easing = ^CGFloat (CGFloat fraction) {
    return sin((fraction) * 2 * M_PI);
};

sinus.additive = YES;
sinus.duration = 2;

Sine Wave

许可证

RBBAnimation 由 Robert Böhnke 构建。它许可在 MIT 许可证下。

如果您在自己一个应用程序中使用 RBBAnimation,我很乐意听听。在推特上关注我吧,我的ID是 @ceterum_censeo