官方介绍
POP是一个在iOS与OS X上通用的极具扩展性的动画引擎。它在基本的静态动画的基础上增加的弹簧动画与衰减动画,使之能创造出更真实更具物理性的交互动画。POP的API可以快速的与现有的ObjC代码集成并可以作用于任意对象的任意属性。
下载地址
集成
- CocoaPods
pod 'pop', '~> 1.0' - 手动集成
-
将工程目录下POP文件夹拖入工程
-
直接编译工程提示头文件找不到
- 原因:你下载popSDK是使用cocopod是集成的,他会将pop认为是系统的包,但是你手动导入的SDK,系统会认为是第三方SDK。
- 解决办法 :将POP目录下所有文件中的#import <pop/xxxxxxx.h>改为#import"xxxxx.h,例如将#import <pop/POPDefines.h>改为:#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"];