Je suis curieux lorsque la taille du contenu de l'utableview est mise à jour après avoir effectué un appel d'animation insert / Supprimer. Je pensais que ce serait comme la plupart des blocs [UIView Animation ...] en ce que la taille de la taille de l'image / la taille du contenu serait mise à jour immédiatement même si l'animation n'a pas terminé, mais cela ne semble pas être comme ça. Des idées? P>
3 Réponses :
La taille du contenu changé après avoir appelé les délégués sur la hauteur:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
Merci pour la réponse. Y a-t-il de toute façon que je peux être informé ou tout type de méthode de délégué qui me dira que la taille du contenu a changé? Cela semble se produire après la fin de l'animation mais j'espère avoir la nouvelle taille de contenu avant de pouvoir animer des choses autour de la table en conséquence
J'ai essayé cela et mettre des déclarations de journal avant et après j'ai appelé la TableView: HauteurFornorTindexpath: méthode et n'a pas vu la taille du contenu sera mise à jour. Cependant, cela m'a aidé à me conduire à une solution pour calculer la taille du contenu. Je posterai la solution comme une réponse distincte.
Malheureusement, je n'ai pas été capable de trouver un bon moyen de mettre à jour le contenu lorsque vous ajoutez / supprimez des lignes d'un utableview, mais j'ai trouvé un moyen de calculer ce que ce sera si vous connaissez les chemins d'index de la Les cellules que vous ajoutez / retirez.
Utilisation du chemin d'index des lignes modifiées, vous pouvez calculer les hauteurs des cellules respectives avec la TableView: HauteurForcedIndexpath: méthode et ajoutez-la à la taille de la taille du contenu actuel de la vue de la table. Voici un exemple si vous ajoutez une seule ligne: P>
[self.tableView insertRowsAtIndexPaths:@[indexPathOfNewRow] withRowAnimation:UITableViewRowAnimationAutomatic]; CGFloat newCellHeight = [self tableView:self.tableView heightForRowAtIndexPath:indexPathOfNewRow]; CGFloat newContentSizeHeight = self.tableView.contentSize.height + newCellHeight
Il ressemble à avec quelque chose comme ceci: p> Je suis capable d'écrire le code de contrôleur d'affichage comme celui-ci : p> et faites défiler la table jusqu'au bas (à l'aide de la nouvelle taille de contenu) au lieu de faire défiler jusqu'à la deuxième rangée (en utilisant le Ancienne taille de contenu). p> p> sizethatfits () code> peut exposer la hauteur d'un nouveau
contenu code> qui est en attente. Vous pouvez ensuite affecter la taille en attente de la résoudre tôt pour les animations de défilement.
Avez-vous résolu ceci? Je rencontre le même problème. Insertion / Suppression de lignes Ensuite, attendez-vous à la tableView.Contère à mettre à jour, mais cela semble être asynchrone.