我试图让UIView
来回发光两次。我下面的动画可以工作,但刚完成后,它就会进入我动画化的状态,而不是原始动画。我将自动反转设置为是,那么为什么它不恢复到原始状态?
[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];
动画反转,但值不会。动画完成后,它将自身从视图中移除(实际上是从视图图层中移除),并且视图似乎具有已在其上设置的属性。
您可以在完成块或您正在使用的旧版 UIView 动画的选择器中重新设置该值。
或者,对于值没有更改的动画,您可以从使用核心动画(它不会挂起值(动画后视图将变为其原始状态))中受益。
您需要导入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"];