1

我试图 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];
4

1 回答 1

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"];
于 2012-06-18T08:17:32.477 回答