我可以将同一动画应用于多个文本字段吗?

时间:2015-03-17 01:53:35

标签: ios facebook-pop

我创建了一个方法来震动我的UITextField并使用POP来完成繁重的工作。

- (void)textFieldErrorAnimation {

    POPSpringAnimation *shake = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionX];

    shake.springBounciness = 10;
    shake.velocity = @(2000);


    [self.value.layer pop_addAnimation:shake forKey:@"shakeValue"];
    [self.year.layer pop_addAnimation:shake forKey:@"shakeYear"];
}

当我将动画应用于对象"值"它似乎正在工作。但不适用于"价值"和"年"在同一时间。

我知道我可以创建一个shake2,shake3等基本上每个textField都有一个但是我觉得我需要这样做很奇怪。

我可以重新使用这个动画的任何想法吗?

1 个答案:

答案 0 :(得分:4)

当然可以。我真正做的是,这种重用动画是创建一个方法,返回动画并正确设置名称和键值。

- (POPSpringAnimation *)popShakeAnimation {


POPSpringAnimation *shakeAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionX];
shakeAnimation.velocity = @2000;
shakeAnimation.springBounciness = 20;
shakeAnimation.name = @"shakeAnimation";

return shakeAnimation;

}

然后每当我需要动摇任何视图时,我只需将它们添加到视图的图层中。

    [self.textfield001.layer pop_addAnimation:[self popShakeAnimation]
                                            forKey:@"shakeAnimation"];
    [self.textfield002.layer pop_addAnimation:[self popShakeAnimation]
                                            forKey:@"shakeAnimation"];
    [self.textfield003.layer pop_addAnimation:[self popShakeAnimation]
                                              forKey:@"shakeAnimation"];

请记住将键值设置为您首先使用动画创建的名称。