简述FaceBook的POP动画

官方介绍

POP是一个在iOS与OS X上通用的极具扩展性的动画引擎。它在基本的静态动画的基础上增加的弹簧动画与衰减动画,使之能创造出更真实更具物理性的交互动画。POP的API可以快速的与现有的ObjC代码集成并可以作用于任意对象的任意属性。
下载地址

集成

  • CocoaPods
    pod 'pop', '~> 1.0'
  • 手动集成
    • 将工程目录下POP文件夹拖入工程


      简述FaceBook的POP动画_第1张图片
      POP目录.png
    • 直接编译工程提示头文件找不到


      简述FaceBook的POP动画_第2张图片
      报错.png
      • 原因:你下载popSDK是使用cocopod是集成的,他会将pop认为是系统的包,但是你手动导入的SDK,系统会认为是第三方SDK。
      • 解决办法 :将POP目录下所有文件中的#import 改为#import"xxxxx.h,例如将#import 改为:#import"POPDefines.h"
  • 删除POP目录以下文件
    • module.modulemap
    • pop-iso-info.plist
    • pop-osx-Info.plist
    • pop-tvos-Info.plist

使用cocopods集成不会出现这么都问题,建议如果项目初期使用cocopods的管理第三方库,使用cocopods集成popSDK,但是项目中间加入popSDK,还是手动集成。

使用之前先讨论以下POP和核心动画的主要区别

  • CoreAnimation 的动画是加在layer上
  • CoreAnimation的动画只是表面而已,并没有真正的修改frame等属性值
  • pop的动画可以添加到任何对象
  • pop的底层是基于CADisplaylink
  • pop的动画真正的修改frame等属性值

使用

POP默认支持三种动画,但同时也支持自定义动画。

  • POPBasicAnimation
  • POPSpringAnimation
  • POPDecayAnimation
  • POPCustomAnimation //自定义动画
POPBasicAnimation
POPBasicAnimation *basicAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPositionY];
basicAnimation.toValue = @(self.square.center.y+300);
basicAnimation.beginTime = CACurrentMediaTime() + 1.0f;//1秒后开始动画
[self.square pop_addAnimation:anBasic forKey:@"position"];
POPSpringAnimation
    //弹簧动画
    POPSpringAnimation *animation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter];
    //起点和终点
    CGPoint center = self.imageView.center;
    animation.fromValue = [NSValue valueWithCGPoint:center];
    animation.toValue = [NSValue valueWithCGPoint:CGPointMake(center.x, center.y+150)];
    //速度
    animation.springBounciness = 20;//影响弹簧的振幅
    //开始时间
    animation.beginTime = CACurrentMediaTime()+1.0;
    //添加到对象上 这里的key可以用于获取对象身上的动画
    [self.imageView pop_addAnimation:animation forKey:@"spring"];
    POPSpringAnimation *getAnimation = [self.imageView pop_animationForKey:@"spring"];
    [getAnimation setCompletionBlock:^(POPAnimation *animation, BOOL finished) {
        [animation pop_removeAnimationForKey:@"spring"];
        NSLog(@"移除动画");
    }];
POPSpringAnimation 减速动画(衰减动画)
    POPDecayAnimation *decayAnimation = [POPDecayAnimation animationWithPropertyNamed:kPOPViewCenter];
    decayAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(0, 300)];//这里的是增量
    //添加到对象上 这里的key可以用于获取对象身上的动画
    [self.imageView pop_addAnimation:decayAnimation forKey:@"decay"];

更详细请参见
http://www.cocoachina.com/ios/20150728/12734.html

你可能感兴趣的:(简述FaceBook的POP动画)