Facebook之POP动画框架

Facebook之POP动画框架

POP是Facebook开源的一个独立于CoreAnimation的动画引擎。应用范围较CoreAnimation要广很多。是一个久经考验的动画库。


POP默认支持三种常见类型的动画和一个自定义动画

  • POPBasicAnimation //与Core Animation一样

  • POPSpringAnimation //弹簧动画

  • POPDecayAnimation //减速动画

  • POPCustomAnimation //自定义动画

POP的一般使用

  1. 选择一种动画类型。创建一个该种类型动画的实例。

+(instancetype)animation;

+(instancetype)animationWithPropertyNamed:(NSString *)name;

  1. 设置动画的属性。POP默认了非常丰富的动画属性,可直接使用,如果没有需要的动画属性。可自定义一个属性。(见:POPAnimatableProperty的使用)

@property (strong, nonatomic) POPAnimatableProperty *property;

  1. 设置动画的常见value值。

POPBasicAnimation:duration、timingFunction

POPSpringAnimation:velocity、springBounciness、springSpeed、dynamicsTension、dynamicsFriction、dynamicsMass

POPDecayAnimation:velocity、deceleration、duration

通用:name、beginTime、delegate、fromValue、toValue

  1. 将动画加载到需要动画的对象上。

-(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设置多个动画的不同组合。

你可能感兴趣的:(Facebook之POP动画框架)