POP: 一个流行的可扩展的动画引擎iOS,它支持spring和衰变动态动画,使其可用于构建现实,基于物理交互。Objective - C API允许快速集成, 对于所有的动画和过渡他是成熟的.
1.1 POP 使用 Objective-C++ 编写,Objective-C++ 是对 C++ 的扩展,就像 Objective-C 是 C 的扩展。而至于为什么他们用 Objective-C++ 而不是纯粹的 Objective-C. 可能是偏爱。-.O
1.2 POP 目前由四部分组成:1. Animations;2. Engine;3. Utility;4. WebCore。
举个栗子哈哈
#import
E1:
-(void)clickPopAction
{
// kPOPLayerPositionY 向下
// kPOPLayerPositionX 向右
POPSpringAnimation*anim=[POPSpringAnimationanimationWithPropertyNamed:kPOPLayerPositionY];
// 移动距离
anim.toValue=[[NSNumberalloc]initWithFloat:_btnPop.center.y+200];
// 从当前 + 1s后开始
anim.beginTime=CACurrentMediaTime()+1.0f;
// 弹力--晃动的幅度 (springSpeed速度)
anim.springBounciness=15.0f;
[_btnPoppop_addAnimation:animforKey:@"position"];
POPSpringAnimation*anim1=[POPSpringAnimationanimationWithPropertyNamed:kPOPLayerBounds];
anim1.toValue=[NSValuevalueWithCGRect:CGRectMake(100,100,99,99)];
[_btnPoppop_addAnimation:anim1forKey:@"size"];
}
E2:在很多金融类app中比较常见、支付宝中的余额包、京东金融余额、就类似这样
// 初始化
POPBasicAnimation*anim=[POPBasicAnimationanimation];
// 限时 1s
anim.duration=3.0;
POPAnimatableProperty*prop=[POPAnimatablePropertypropertyWithName:@"count++"initializer:^(POPMutableAnimatableProperty*prop){
prop.readBlock= ^(idobj,CGFloatvalues[]){values[0]=[[objdescription]floatValue];};
prop.writeBlock= ^(idobj,constCGFloatvalues[])
{
[objsetText:[NSStringstringWithFormat:@"%.2f",values[0]]];
};
prop.threshold=0.01;
}];
anim.property=prop;
anim.fromValue=@(0.0);
anim.toValue=@(1314.52);
[self.xt_countLabelpop_addAnimation:animforKey:@"counting"];
E3
CALayer*layer0=[CALayerlayer];
layer0.opacity=1.0;
layer0.transform=CATransform3DIdentity;
[layer0setMasksToBounds:YES];
[layer0setBackgroundColor:[UIColorcolorWithRed:0.5448green:0.6836blue:0.9986alpha:1.0].CGColor];
[layer0setCornerRadius:12.5];
[layer0setBounds:CGRectMake(0,0,25,25)];
[self.view.layeraddSublayer:layer0];
layer0.position=CGPointMake(self.view.center.x,266);
[selfperformAnimation:layer0];
-(void)performAnimation:(CALayer*)layer
{
[layerpop_removeAllAnimations];
POPBasicAnimation*anim=[POPBasicAnimationanimationWithPropertyNamed:kPOPLayerScaleXY];
staticBOOLani=YES;
if(ani){
anim.toValue=[NSValuevalueWithCGPoint:CGPointMake(1.0,1.0)];
}else{
anim.toValue=[NSValuevalueWithCGPoint:CGPointMake(1.5,1.5)];
}
ani= !ani;
anim.completionBlock= ^(POPAnimation*anim,BOOLfinished){
if(finished){[selfperformAnimation:layer];}
};
[layerpop_addAnimation:animforKey:@"Animation"];
}