代码库> 视图动画> RBBAnimation——允许使用block来声明动画
RBBAnimation——允许使用block来声明动画
关注
查看次数:4810 下载次数:221
上传时间:2013-11-06 大小:30 B
RBBAnimation是CAKeyframeAnimation的一个子类,它可以让你使用block来声明动画,而不需要写出所有单独的key-frames。


这样在指定动画效果的时候就灵活很多,而且你也可以保持代码的简洁。


RBBCustomAnimation
使用RBBCustomAnimation,通过传递一个RMBBAnimationBlock来创建一个随机的动画。



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



RBBSpringAnimation
RBBSpringAnimation是CASpringAnimation很好用的一个替代品。指定弹跳物体的质量,阻尼,刚度以及初始速度之后你可以可以看物体弹跳的效果了。



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类似,但是比它的灵活性更大。

它支持使用RBBCubicBezier帮助功能的CAMediaTimingFunction中获得的三次贝塞尔曲线的插值:



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:



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;




收藏
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0


综合评论
  • 下载来先帮你修bug,自己锁屏解锁看下,,已经修复好了
    王爸爸 评论了 XYUISlider
  • 没有编辑选项??
    不要再下载这个代码了,github我重构了下,原来业务臃肿垃圾的东西都剔了
  • https://github.com/tianya2416/GKiOSNovel
    tianya2416 评论了 Novel
  • 您好,想实现每类都可以多选该怎么修改呢?
    愤愤忠 评论了 iOS 商品规格选择
  • 去哪里star
    18665920701 评论了 Novel
  • https://github.com/wwmz/WMZDialog
提示
sina weixin mail 回到顶部