Есть ли способ указать продолжительность для анимации строки UITableView или получить обратный вызов после завершения анимации?
Я хотел бы мигать индикаторами прокрутки после завершения анимации. Использование вспышки до этого ничего не дает. Пока что у меня есть обходной путь - отложить полсекунды (это, похоже, продолжительность анимации по умолчанию), то есть:
[self.tableView insertRowsAtIndexPaths:newRows
withRowAnimation:UITableViewRowAnimationFade];
[self.tableView performSelector:@selector(flashScrollIndicators)
withObject:nil
afterDelay:0.5];
ios
iphone
uitableview
animation
cocoa-touch
Дэниел Дикисон
источник
источник
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath
Ответы:
В настоящее время, если вы хотите сделать это, начиная с iOS 11 есть новая функция :
В закрытии обновлений вы размещаете тот же код, что и в разделе beginUpdates () / endUpdates. И завершение выполняется после всех анимаций.
источник
Только что наткнулся на это. Вот как это сделать:
Цель-C
Swift
источник
setAnimationDuration
похоже, не влияет на продолжительность вставки / удаления. iOS 6Расширяя прекрасный ответ karwag , обратите внимание, что в iOS 7 окружение CATransaction с помощью UIView Animation предлагает управление продолжительностью анимации таблицы.
Продолжительность анимации UIView не влияет на iOS 6. Возможно, анимация таблиц iOS 7 реализована по-другому, на уровне UIView.
источник
Это чертовски полезный трюк! Я написал расширение UITableView, чтобы все время не писать материалы CATransaction.
Это используется так:
источник
setCompletionBlock
iOS 4+Сокращая прекрасный ответ Брента , по крайней мере, для iOS 7 вы можете кратко обернуть все это в вызове [UIView animateWithDuration: delay: options: animations: завершения:]:
хотя, похоже, я не могу изменить кривую анимации по умолчанию ни с чем, кроме EaseInOut.
источник
Вот быстрый вариант ответа Карвага
источник
Мне это нужно для collectionView. Я сделал простое расширение, чтобы решить эту проблему:
источник
Поскольку
performBatch
метод tableView доступен только с iOS 11 , вы можете использовать следующее расширение:источник
Ответ Антуана довольно хорош, но для UICollectionView. Вот он для UITableView:
Называется так:
источник
Вы можете попробовать обернуть insertRowsAtIndexPath в
транзакции, а затем выполните флэш-память.
источник