学习使用炫酷的 Facebook Pop (二)

假如要对一个view进行一种animation,使得这个view往下移动一段距离,弹一弹然后停住,就要利用POPSpringAnimation这个类。
很大程度上参考了popping那份代码。感谢

直接上代码:

-(void)moveDownView:(UIView *)view
{
    /*
     kPOPLayerPosition意思是这个animation对象要干的事情是移动layer的Position
     还有很多其他类型的spring animation
     kPOPLayerOpacity 透明度渐变
     kPOPLayerRotation 旋转渐变
     kPOPLayerScaleXY 大小渐变
     kPOPLayerTranslationXY 仿射变换渐变
     等等等等。。实在太多不宜列举
    */
    POPSpringAnimation *positionAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPosition];
   
    /*
     toValue是设置变化后的参数,例如PositionAnimation的话,toValue就是终点的坐标
     1.springBounciness 弹簧弹力 取值范围为[0, 20],默认值为4
     2.springSpeed 弹簧速度,速度越快,动画时间越短 [0, 20],默认为12,和springBounciness一起决定着弹簧动画的效果
     3.dynamicsTension 弹簧的张力
     4.dynamicsFriction 弹簧摩擦
     5.dynamicsMass 质量 。张力,摩擦,质量这三者可以从更细的粒度上替代springBounciness和springSpeed控制弹簧动画的效果
     */
    positionAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(view.center.x,view.center.y+100)];
    positionAnimation.springSpeed = 1.0f;
    positionAnimation.springBounciness = 20.0f;
   
    /*
     设置好参数后,就可以用函数pop_addAnimation: forKey来开始animation。这里的key应该是记录这次animation的设置,保存到某个堆栈,在需要的时候重新调用出来。
     */
    [view.layer pop_addAnimation:positionAnimation forKey:@"layerPositionAnimation"];
   
   
    POPSpringAnimation *scaleAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
    scaleAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(0.5, 0.5)];
    scaleAnimation.springBounciness = 10.f;
    [view.layer pop_addAnimation:scaleAnimation forKey:@"scaleAnimation"];
}


调用这个函数,就可以使得view开始animation,例如配合一个touchUpInside
- (void)touchUpInside:(UIControl *)sender {
    AnimationInfo animationInfo = [self animationInfoForLayer:sender.layer];
    BOOL hasAnimations = sender.layer.pop_animationKeys.count;
   
    if (hasAnimations && animationInfo.progress < 0.98) {
        [self pauseAllAnimations:NO forLayer:sender.layer];
        return;
    }
   
    [sender.layer pop_removeAllAnimations];

    [self moveDownView:sender];
}


特别备注一:
测试了几组参数,先描述如下

springSpeedspringBouncinessdescription
120总体速度缓慢,振动比较明显
110总体速度缓慢,振动变得不明显,
15总体速度缓慢,振动非常不明显。
520速度提升,振动明显
1520速度相当快,振动明显

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值