我想让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];
答案 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"];