Я работаю над проектом, в котором мне нужно анимировать определенный цвет фона ячейки представления коллекции в мигающее состояние. Я использую код ниже в моем подклассе collectionviewcell:
- (void) fadeInAnimation{
if (!self.animationRunning) {
if ([self canRunAnimation]) {
typeof(self) __weak weakSelf = self;
self.nameLabel.textColor = [UIColor blackColor];
self.animationRunning = true;
[UIView animateWithDuration:1.0
delay:0.0
options: UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{
self.backgroundColor = [self.backgroundColor colorWithAlphaComponent:1.0];
}
completion:^(BOOL finished) {
[weakSelf fadeOutAnimation];
}];
}
else {
[self.layer removeAllAnimations];
self.backgroundColor = [self.backgroundColor colorWithAlphaComponent:1.0];
}
}
}
- (void) fadeOutAnimation {
typeof(self) __weak weakSelf = self;
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{
self.backgroundColor = [self.backgroundColor colorWithAlphaComponent:0.65];
}
completion:^(BOOL finished) {
weakSelf.animationRunning = NO;
[weakSelf fadeInAnimation];
}];
}
Моя проблема в том, что, хотя этот код работает, я думаю, что он не очень эффективен и нуждается в очистке. Кроме того, мне нужно, чтобы все анимации, запущенные в настоящий момент, синхронизировались при перепрошивке, однако мой код заставляет ячейки исчезать и исчезать в разное время. У меня есть метод refre sh, который обновляет пользовательский интерфейс на основе результатов моего вызова API каждые несколько секунд. Есть идеи, как я могу синхронизировать запущенные в данный момент UIAnimations? Я надеюсь, что я был ясен в своем вопросе.