iOS 走进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。下图有助于你更好的理解它的架构

构成

  1. 它支持CocoaPods 你可以这样
pod 'pop', '~> 1.0.8'  
  1. 或者这样点击下载拉入工程

  2. 我使用的Cocoapods 所以使用之前你需要这样

#import <POP.h>
XT_01

E1:

- (void)clickPopAction
{
    // kPOPLayerPositionY 向下
    // kPOPLayerPositionX 向右
    POPSpringAnimation *anim = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionY];
    // 移动距离
    anim.toValue = [[NSNumber alloc] initWithFloat:_btnPop.center.y + 200];
    // 从当前 + 1s后开始
    anim.beginTime = CACurrentMediaTime() + 1.0f;
    // 弹力--晃动的幅度 (springSpeed速度)
    anim.springBounciness = 15.0f;
    [_btnPop pop_addAnimation:anim forKey:@"position"];
    POPSpringAnimation *anim1 = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];
    anim1.toValue = [NSValue valueWithCGRect:CGRectMake(100, 100, 99, 99)];
    [_btnPop pop_addAnimation:anim1 forKey:@"size"];
}
XT_02

E2:在很多金融类app中比较常见、支付宝中的余额包、京东金融余额、就类似这样

    // 初始化
    POPBasicAnimation *anim = [POPBasicAnimation animation];
    // 限时 1s. 2s.
    anim.duration = 3.0;
    POPAnimatableProperty * prop = [POPAnimatableProperty propertyWithName:@"count++" initializer:^(POPMutableAnimatableProperty *prop) {
        prop.readBlock = ^(id obj, CGFloat values[]){ values[0] = [[obj description] floatValue]; };
        prop.writeBlock = ^(id obj, const CGFloat values[])
        {
            [obj setText:[NSString stringWithFormat:@"%.2f",values[0]]];
        };
        prop.threshold = 0.01;
    }];
    
    anim.property = prop;
    anim.fromValue = @(0.0);
    anim.toValue = @(1314.52);
    [self.xt_countLabel pop_addAnimation:anim forKey:@"counting"];
XT_03

E3

    CALayer *layer0 = [CALayer layer];
    layer0.opacity = 1.0;
    layer0.transform = CATransform3DIdentity;
    [layer0 setMasksToBounds:YES];
    [layer0 setBackgroundColor:[UIColor colorWithRed:0.5448 green:0.6836 blue:0.9986 alpha:1.0].CGColor];
    [layer0 setCornerRadius:12.5];
    [layer0 setBounds:CGRectMake(0, 0, 25, 25)];
    [self.view.layer addSublayer:layer0];
    layer0.position = CGPointMake(self.view.center.x, 266);
    [self performAnimation:layer0];
- (void)performAnimation:(CALayer *)layer
{
    [layer pop_removeAllAnimations];
    POPBasicAnimation *anim = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerScaleXY];
    static BOOL ani = YES;
    if (ani) {
        anim.toValue = [NSValue valueWithCGPoint:CGPointMake(1.0, 1.0)];
    }else{
        anim.toValue = [NSValue valueWithCGPoint:CGPointMake(1.5, 1.5)];
    }
    ani = !ani;
    anim.completionBlock = ^(POPAnimation *anim, BOOL finished) {
        if (finished) { [self performAnimation:layer]; }
    };
    [layer pop_addAnimation:anim forKey:@"Animation"];
}

Swift版本仿网易云音乐播放音乐动画效果-- 简书
三分钟教你把代码托管到Github -- 简书
Swift 很强大的图表库-Charts使用 -- 简书
Swift版仿简书App淘宝App很友好弹出view效果 -- 简书
iOS UICollectionView高级用法“长按自由移动cell重排 -- 简书
iOS仿微信App添加带箭头的view -- 简书
iOS仿美团外卖饿了吗App点餐动画 -- 简书
你要的Swift资料 -- 简书

---------------------------------------
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 15,632评论 4 61
  • 你沉默,散发着光和热,因为抛弃了许多,而被人们视为傲慢,你那颠覆的理论,为人们所不满,你那超人的学说,代表至高无上...
    未想到合适的名字阅读 362评论 0 2
  • 有时 有针没有线 有时 有线没有针 2014-2-11 有针有线
    有针有线阅读 514评论 0 1
  • 尘寰外,碧海中,桃花之间桃花岛。 秋风起,海波兴,几度潮来听玉箫。 箫声起处落英飞,遽引心情向碧霄。 桃花纷飞诉往...
    huangxiaohao阅读 792评论 0 1

友情链接更多精彩内容