我每次在我的应用中发生某些事情时都会使用Facebook Pop库来反弹视图。问题是动画仅在第一次出现时起作用。
使用此代码段可轻松重现
- (IBAction)buttonAction:(id)sender
{
POPSpringAnimation *sprintAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY];
sprintAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0.9, 0.9)];
sprintAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(2, 2)];
sprintAnimation.springBounciness = 20.f;
[self.shakeView pop_addAnimation:sprintAnimation forKey:@"springAnimation"];
}
第一次点击按钮时,shakeView
动画设置正确,但之后却没有。
我尝试使用[self.shakeView pop_removeAllAnimations]
删除所有动画,然后再添加新动画,但它没有帮助。
我想我在Pop用法中遗漏了一些东西。
答案 0 :(得分:1)
好的,我发现了问题。解决方案是将removedOnCompletion
设置为NO
,如下所示:
- (IBAction)buttonAction:(id)sender
{
POPSpringAnimation *sprintAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewScaleXY];
sprintAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(0.9, 0.9)];
sprintAnimation.velocity = [NSValue valueWithCGPoint:CGPointMake(2, 2)];
sprintAnimation.springBounciness = 20.f;
sprintAnimation.removedOnCompletion = NO;
[self.shakeView pop_addAnimation:sprintAnimation forKey:@"springAnimation"];
}