
Security News
Node.js Moves Toward Stable TypeScript Support with Amaro 1.0
Amaro 1.0 lays the groundwork for stable TypeScript support in Node.js, bringing official .ts loading closer to reality.
github.com/robb/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.
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.
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
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
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;
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.
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Amaro 1.0 lays the groundwork for stable TypeScript support in Node.js, bringing official .ts loading closer to reality.
Research
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.