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"];