UIView анимация не возвращается в исходное состояние

Я пытаюсь сделать 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];

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"];
Другие вопросы по тегам