У меня есть UIView называется волной и имеет приятную бесконечную «плавающую» анимациюIOS добавления второй анимации уже анимированный UIView
[UIView animateWithDuration:1
delay:0
options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveEaseInOut
animations:^{
CGPoint center = waves.center;
center.y += 5;
waves.center = center;
}
completion:nil];
Теперь, если я добавлю еще одну анимации, скажем, перемещение этой точки зрения к другому местоположение, «плавающие» анимации останавливаются. Это разумная реакция, и не стоит начинать «плавание» снова в блоке завершения. Мне просто интересно, не хватает ли я чего-то, возможно, в настройках анимации, чтобы объединить их так, чтобы они не прерывали друг друга.
Я был в состоянии сделать это, если вторая анимация основана на CGAffineTransfromScale, они не имеют проблем, но когда я перемещаю центр представления, это не так.
ОБНОВЛЕНИЕ: обнаружена ошибка в работе. У меня есть кнопка, которая вызывает метод, ответственный за перемещение центра моего представления с анимацией. Если я нажимаю его слишком быстро, пока предыдущая анимация не завершится. Просмотр просто привязывается к новой позиции без анимации, и блок завершения не вызывается. Вот код для этого метода:
- (void)wavesAnimationReversed:(BOOL)reversed {
CGFloat y = waves.frame.size.height*0.25;
y = reversed ? -y : y;
// CGFloat damping = reversed ? 1 : 0.65;
CGFloat damping = 1;
[UIView animateWithDuration:kWAVES_ANIMATION_DURATION
delay:0
usingSpringWithDamping:damping
initialSpringVelocity:0
options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut
animations:^{
CGPoint center = waves.center;
center.y += y;
waves.center = center;
}
completion:^(BOOL finished) {
[self handleStartWavesFloating];
}];
}
Как насчет флага 'UIViewAnimationOptionBeginFromCurrentState'? –
@GuyKogus nope, не делает трюка – NKorotkov
Что касается вашего обновления, если вы не хотите, чтобы привязка появлялась, проверьте, действительно ли 'finished' (true) (или' YES'). Кроме того, если анимация преобразований работает, почему бы не попробовать использовать CGAffineTransfromTranslate в блоке анимации? –