UITableView ligne animation durée et de l'achèvement de rappel
Est-il un moyen de spécifier la durée de UITableView ligne des animations, ou pour obtenir un rappel lorsque l'animation est terminée?
Ce que je voudrais faire est de flash les indicateurs de défilement après l'animation est terminée. Faire le flash avant de ne faire quoi que ce soit. Jusqu'à présent, la solution de contournement que j'ai est de retarder d'une demi-seconde (qui semble être la valeur par défaut de l'animation de la durée), c'est à dire:
[self.tableView insertRowsAtIndexPaths:newRows
withRowAnimation:UITableViewRowAnimationFade];
[self.tableView performSelector:@selector(flashScrollIndicators)
withObject:nil
afterDelay:0.5];
- Je n'ai pas essayé moi-même, mais cela pourrait peut-être faire, avec un peu de chemin d'index de manutention:
- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath
Vous devez vous connecter pour publier un commentaire.
Viens de tomber sur ce. Voici comment le faire:
Objective-C
Swift
setAnimationDuration
ne semble pas affecter l'insertion/suppression de la durée. iOS 6performBatchUpdates
doit être préférée à l'beginUpdates
: developer.apple.com/documentation/uikit/uitableview/...Expansion sur karwag beaux-répondre, notez que sur iOS 7, dans les environs de la CATransaction avec une UIView Animation propose le contrôle de la table d'animation durée.
La UIView animation durée n'a pas d'effet sur iOS 6. Peut-être iOS 7 table des animations sont mises en œuvre différemment, à la UIView niveau.
Raccourcissement Brent beaux-répondre, pour au moins iOS 7, vous pouvez envelopper ce tous sèchement dans un [UIView animateWithDuration:délai:options:animations:achèvement:] appel:
cependant, je n'arrive pas à remplacer la valeur par défaut courbe d'animation à partir de rien d'autre que EaseInOut.
Voici une Swift version de karwag réponse
C'est un enfer d'une astuce utile!
J'ai écrit un UITableView extension pour éviter d'écrire CATransaction des trucs tout le temps.
Ce est utilisé comme suit:
setCompletionBlock
qui est iOS 4+Pour moi, j'avais besoin de cela pour un collectionView. J'ai fait une simple extension pour résoudre ce problème:
Vous pourriez essayer d'envelopper le insertRowsAtIndexPath dans un
transaction, puis de faire de flash par la suite.