Facebook之POP动画框架
POP是Facebook开源的一个独立于CoreAnimation的动画引擎。应用范围较CoreAnimation要广很多。是一个久经考验的动画库。
POP默认支持三种常见类型的动画和一个自定义动画
-
POPBasicAnimation //与Core Animation一样
-
POPSpringAnimation //弹簧动画
-
POPDecayAnimation //减速动画
-
POPCustomAnimation //自定义动画
POP的一般使用
- 选择一种动画类型。创建一个该种类型动画的实例。
+(instancetype)animation;
+(instancetype)animationWithPropertyNamed:(NSString *)name;
- 设置动画的属性。POP默认了非常丰富的动画属性,可直接使用,如果没有需要的动画属性。可自定义一个属性。(见:POPAnimatableProperty的使用)
@property (strong, nonatomic) POPAnimatableProperty *property;
- 设置动画的常见value值。
POPBasicAnimation:duration、timingFunction
POPSpringAnimation:velocity、springBounciness、springSpeed、dynamicsTension、dynamicsFriction、dynamicsMass
POPDecayAnimation:velocity、deceleration、duration
通用:name、beginTime、delegate、fromValue、toValue
- 将动画加载到需要动画的对象上。
-(void)pop_addAnimation:(POPAnimation *)anim forKey:(NSString *)key
自定义属性 POPAnimatableProperty
初始化方法:
+(id)propertyWithName:(NSString *)name;
+(id)propertyWithName:(NSString *)name initializer:(void (^)(POPMutableAnimatableProperty *prop))block
属性:
一般使用:readBlock、writeBlock来自定义动画的属性
POPAnimatableProperty * prop = [POPAnimatableProperty propertyWithName:@"count" initializer:^(POPMutableAnimatableProperty *prop) {
[prop setReadBlock:^(id obj, CGFloat values[]) {
values[0] = [[obj description] floatValue];
}];
[prop setWriteBlock:^(id obj, const CGFloat values[]) {
NSString * str =[NSString stringWithFormat:@"%.2f",values[0]];
[obj setText:[NSString stringWithFormat:@"%@%%",str]];
}];
prop.threshold = 0.01;
}];
labelBani.property = prop;
结尾
可以同时向一个对象同时添加多个动画。通过animation.begintime = CACurrentMediaTime() + 2.0设置多个动画的不同组合。
网友评论