Facebook POP

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

Facebook POP_第1张图片

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"];

}

Facebook POP_第2张图片
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"];


Facebook POP_第3张图片

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"];

}

你可能感兴趣的:(Facebook POP)