Не уверен, когда вы запускаете анимации и не зацикливаетесь ли они (например, вращатель UIActivityView или что-то в этом роде) - похоже, это каждый пиксель, который просматривает таблица?
В любом случае, возможно, вы могли бы использовать методы делегата UIScrollView и указать каждой ячейке запускать анимацию на scrollViewWillBeginDragging:
и указать каждой ячейке остановиться на scrollViewDidEndDragging:
Вы можете установить логическое значение isAnimating
для вашего UITableViewCell
и, если анимация уже выполняется, ничего не делать.
if (isAnimating) {
// ... do nothing
} else {
// Start your animation
}
Или придерживайтесь того, что у вас есть сейчас, и используйте логическое значение, но запускайте анимацию, только если она не анимируется. Затем в параметре finished
просто установите isAnimating
на NO
.
if (isAnimating) {
// ... do nothing
} else {
[UIView animateWithDuration:0.3f
animations:^{
// animations...
isAnimating = YES;
}
completion:^{
isAnimating = NO;
}
];
}