RBBAnimation

Block-based animations made easy, comes with easing functions and a CASpringAnimation replacement.

  • 所有者: robb/RBBAnimation
  • 平台:
  • 许可证: MIT License
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

RBBAnimation

RBBAnimation is a subclass of CAKeyframeAnimation that allows you to
declare your animations using blocks instead of writing out all the
individual key-frames.

This gives you greater flexibility when specifying your animations while keeping
your code concise.

It comes out of the box with a replacement for
CASpringAnimation
, support for custom easing functions
such as bouncing
as well as hooks to allow your writing
your own animations fully from scratch.

Installation

To install RBBAnimation, I recommend the excellent CocoaPods. Simply add this
to your Podfile

pod 'RBBAnimation', '0.4.0'

and you are ready to go!

If you'd like to run the bundled test app, make sure to install its dependencies
by running

pod install

after cloning the repo.

RBBCustomAnimation

Use RBBCustomAnimation to create arbitrary animations by passing in an
RBBAnimationBlock:

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;
};

The arguments of the block are the current position of the animation as well as
its total duration.

Most of the time, you will probably want to use the higher-level
RBBTweenAnimation.

RBBSpringAnimation

RBBSpringAnimation is a handy replacement for the private CASpringAnimation.
Specify your spring's mass, damping, stiffness as well as its initial velocity
and watch it go:

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 allows you to animate from one value to another, similar to
CABasicAnimation but with a greater flexibility in how the values should be
interpolated.

It supports the same cubic Bezier interpolation that you get from
CAMediaTimingFunction using the RBBCubicBezier helper function:

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;

However, RBBTweenAnimation also supports more complex easing functions such as
RBBEasingFunctionEaseOutBounce:

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

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

You can also specify your own easing functions, from scratch:

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;

License

RBBAnimation was built by Robert Böhnke. It is licensed under the MIT
License.

If you use RBBAnimation in one of your apps, I'd love to hear about it. Feel
free to follow me on Twitter where I'm @ceterum_censeo.

主要指标

概览
名称与所有者robb/RBBAnimation
主编程语言Objective-C
编程语言Ruby (语言数: 2)
平台
许可证MIT License
所有者活动
创建于2013-10-11 16:49:57
推送于2022-06-24 14:03:15
最后一次提交2022-06-24 16:03:15
发布数5
最新版本名称v0.4.0 (发布于 2014-04-14 23:12:02)
第一版名称0.0.1 (发布于 2013-10-22 12:39:04)
用户参与
星数2.1k
关注者数62
派生数182
提交数102
已启用问题?
问题数12
打开的问题数4
拉请求数10
打开的拉请求数2
关闭的拉请求数2
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?