POP基本介绍
- 创建动画对象
- 设置动画属性(图层、视图)
- 将动画添加到图层
- 可以设置block 监听动画完成,到达某一数值
POP支持三种动画类型:
弹力:POPSpringAnimation 进场时候的动画(个人理解)
衰减:POPDecayAnimation 出场时候的动画~
基本:POPBasicAnimation 可以方便的实现动画组
如果需要做动画延迟,需要依据核心代码
anim.beginTime = CACurrentMediaTime() * CFTimeInterval(i) * 0.025
实现步骤
- 导入pop 框架
pod 'pop', '~> 1.0'
动画代码
//创建动画 let anim: POPBasicAnimation = POPBasicAnimation(propertyNamed: kPOPViewAlpha) anim.fromValue = 0 anim.toValue = 1 anim.duration = 0.5 //添加到视图 pop_add(anim, forKey: nil)
这样就给当前视图添加了一个简单动画了
POP 动画不同于CAAnination 只能添加在layer层,POP可以添加在View层,做移动的时候也不需要移动控件的位置,只需要添加相对用的fromValue 和toValue 的值,就可以了。
-
一个简单的移动动画
//创建动画
let anim: POPSpringAnimation = POPSpringAnimation(propertyNamed: kPOPLayerPositionY)
//设置动画属性
anim.fromValue = btn.center.y + 400
anim.toValue = btn.center.y
//弹力系数 取值范围0 - 20 数值越大 弹性越大 默认为4
anim.springBounciness = 8
//弹性速度 取值范围 0 -20 数值越大,速度越快,默认为12
anim.springSpeed = 10
//设置动画启动时间
anim.beginTime = CACurrentMediaTime() + CFTimeInterval(i) * 0.025btn.pop_add(anim, forKey: nil)
-
有些情况 我们需要在完成某些特定的动画效果后,做一些操作,就要用到completionBlock了。
let anim: POPBasicAnimation = POPBasicAnimation(propertyNamed: kPOPViewAlpha) anim.fromValue = 1 anim.toValue = 0 anim.duration = 0.25 pop_add(anim, forKey: nil) anim.completionBlock = {_,_ in self.removeFromSuperview() }
-
关于缩放要注意的是x,y 在系统中使用CGPoint 表示,如果要转换成 id 需要使用 NSValue 包装下
let anim: POPBasicAnimation = POPBasicAnimation(propertyNamed: kPOPViewScaleXY) let scale = 2 anim.toValue = NSValue(cgPoint: CGPoint(x: scale, y: scale)) anim.duration = 0.5 btn.pop_add(anim, forKey: nil)