Facebook POP动画简单使用

简单实用POP动画

发现POP比较好的一点是保留了动画结束后的状态,通过block回调。使用POPAnimatableProperty 可以快速添加基本动画,也可以自定义属性动画。


弹性动画

- (void)spring{

    POPSpringAnimation* framePOP = [POPSpringAnimation animationWithPropertyNamed:kPOPViewBackgroundColor];

    framePOP.springSpeed = 10.f;

    framePOP.springBounciness = 4.f;

    framePOP.toValue =  [UIColor greenColor];

    [framePOP setCompletionBlock:^(POPAnimation * anim , BOOL finsih) {

        if (finsih) {

            NSLog(@"view.frame = %@",NSStringFromCGRect(view.frame));

        }

    }];

    [view pop_addAnimation:framePOP forKey:@"go"];

}


减缓动画

- (void)Decay{

    POPDecayAnimation* decay = [POPDecayAnimation animationWithPropertyNamed:kPOPViewFrame];

//    decay.toValue = [NSValue valueWithCGRect:CGRectMake(200, 400, 100, 100)];

    decay.velocity = [NSValue valueWithCGRect:CGRectMake(200, 300, 100, 100)];

    [view pop_addAnimation:decay forKey:@"go"];

    

}



基本动画

-(void)basic{

    POPBasicAnimation* basicAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerCornerRadius];

    basicAnimation.toValue = [NSNumber numberWithFloat:CGRectGetHeight(view.frame)/2.];

    basicAnimation.timingFunction =[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

//    basicAnimation.duration = 3.f;

    [basicAnimation setCompletionBlock:^(POPAnimation * ani, BOOL fin) {

        if (fin) {

            NSLog(@"view.frame = %@",NSStringFromCGRect(view.frame));

//            POPBasicAnimation* newBasic = [POPBasicAnimation easeInEaseOutAnimation];

//            newBasic.property = [POPAnimatableProperty propertyWithName:kPOPLayerCornerRadius];

//            newBasic.toValue = [NSNumber numberWithFloat:0];

//            [view.layer pop_addAnimation:newBasic forKey:@"go"];

        }

    }];

    [view.layer pop_addAnimation:basicAnimation forKey:@"frameChange"];

    

    

    


}


组合动画

-(void)group

{

    view.transform = CGAffineTransformMakeRotation(M_PI_2/3);

    

    

    POPBasicAnimation* spring = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPositionY];

    spring.beginTime = CACurrentMediaTime();

    spring.duration = .4f;

    spring.fromValue = [NSNumber numberWithFloat:-100.f];

    spring.toValue = [NSNumber numberWithFloat:CGRectGetMinY(view.frame) + 80];

    [spring setCompletionBlock:^(POPAnimation * ani, BOOL fin) {

    }];

    

    

    POPBasicAnimation* basic = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerRotation];

    basic.beginTime = CACurrentMediaTime();

    basic.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    basic.toValue = [NSNumber numberWithFloat:-M_PI_4];

    basic.duration = .4f;

    

    

    POPBasicAnimation* rotation = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerRotation];

    rotation.beginTime = CACurrentMediaTime() + .4f;

    rotation.toValue = [NSNumber numberWithFloat:0.f];

    rotation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    rotation.duration = .25f;

    

    

    POPBasicAnimation* donw = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPositionY];

    donw.beginTime = CACurrentMediaTime() + 0.4f;

    donw.toValue = [NSNumber numberWithFloat:CGRectGetMinY(view.frame)];

    donw.duration = .25f;

    donw.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    

    

    

    [view.layer pop_addAnimation:spring forKey:@"spring"];

    [view.layer pop_addAnimation:basic forKey:@"basic"];

    [view.layer pop_addAnimation:donw forKey:@"down"];

    [view.layer pop_addAnimation:rotation forKey:@"rotation"];

}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值