UIView动画不会回到原始状态

时间:2012-06-18 07:53:35

标签: objective-c background-color uiviewanimation commitanimations beginanimations

我想让UIView两次来回发光。我的动画在下面工作但是在它完成之后它进入我将其动画化的状态,而不是原始动画。我将autoreverses设置为YES,为什么它不会回到原始状态?

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationRepeatCount:2];
[UIView setAnimationRepeatAutoreverses:YES];
[UIView setAnimationDuration:0.3];
[UIView setAnimationBeginsFromCurrentState:YES];
textDetailView.layer.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:0.3].CGColor;
[UIView commitAnimations];

1 个答案:

答案 0 :(得分:1)

动画反转,但值不反转。动画完成后,它会从视图中移除(实际上是从视图层),并且视图似乎具有已在其上设置的属性。

您可以在完成块或选择器中为您正在使用的旧UIView动画设置值。

或者,对于值未发生变化的动画,您可以从使用Core Animation(不会挂起值(动画后视图变为原始状态))中受益。

您需要导入QuartzCore.framework并包含QuartzCore/QuartzCore.h才能使其正常工作。

还可能需要将更新更新为:

CABasicAnimation *myColorAnimation = [CABasicAnimation animationWithKeyPath:@"backgroundColor"];
[myColorAnimation setAutoreverses:YES];
[myColorAnimation setRepeatCount:2];
[myColorAnimation setDuration:0.3];
[myColorAnimation setToValue:(id)[myColor CGColor]];
// the default "from value" is the current value
[[textDetailView layer] addAnimation:myColorAnimation forKey:@"myColorKey"];