Facebook POP动画简单使用
2015-01-15 15:57
405 查看
简单实用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"];
}
发现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"];
}
相关文章推荐
- Facebook POP动画简单使用
- iOS中Facebook开源动画库POP的简单使用
- FaceBook pop 动画开源框架使用说明
- POP简单动画简单使用 (入门级别)
- FaceBook pop 动画开源框架使用教程说明
- 使用facebook pop 与 CAShapeLayer 实现 画线条的动画效果
- pop动画库简单使用小记
- Facebook POP框架的简单使用
- 使用 Facebook 开源动画库 POP 实现真实衰减动画
- 使用NSTimer与iphone的简单动画,实现飘雪效果
- Dojo1.8系列教程二 ---- 简单的模块及动画使用
- Android动画:AnimationDrawable资源的简单使用
- 使用JavaScript制作简单的动画
- CATransition动画的简单使用
- Core Animation基础介绍、简单使用CALayer以及多种动画效果
- Core Animation基础介绍、简单使用CALayer以及多种动画效果
- Core Animation基础介绍、简单使用CALayer以及多种动画效果
- 冒泡动画按钮的简单实现(使用CSS3)
- 简单图片3D变换动画的制作(使用transition、transform)