40 votes

Obtenez la hauteur de UITableView sans barres de défilement

J'ai besoin d'obtenir toute la hauteur d'un UITableView (c'est-à-dire la hauteur à laquelle il n'y aurait plus rien à faire défiler). Est-ce qu'il y a un moyen de faire ça?

J'ai essayé [tableView sizeThatFits:CGSizeZero] , mais cela ne retourne qu'une taille de fichier 0x0.

94voto

Todd Yandell Points 8515

Essayez la méthode contentSize , héritée de la superclasse de UITableView, UIScrollView. Cependant, vous pouvez constater que contentSize renvoie une valeur incorrecte ou périmée. Vous devez donc probablement appeler layoutIfNeeded premier pour recalculer la présentation de la table.

 - (CGFloat)tableViewHeight
{
   [tableView layoutIfNeeded];
   return [tableView contentSize].height;
}
 

-1voto

Jeff Grimes Points 1494

Essayez de transmettre un paramètre CGSize différent au lieu de CGSizeZero. La méthode sizeThatFits: utilise ce paramètre pour calculer son résultat. Essayez de passer self.view.size de la classe qui passe cet appel.

-2voto

Yaroslav Pavlov Points 11

Si le nombre de lignes d'une vue de table a changé et que vous avez besoin de connaître la taille du contenu de la vue en tenant compte des dernières modifications, je n'ai pas trouvé que la méthode layoutIfNeeded était réellement utile.

Après un peu de piratage, je sais comment forcer la vue tableau à recalculer la taille de son contenu. Dans mon cas, il suffit de réinitialiser le cadre de la vue tableau pour le faire fonctionner:

 - (CGSize)com_lohika_contentSize
{
    CGRect theFrame = self.frame;
    self.frame = CGRectZero;
    self.frame = theFrame;
    [self layoutIfNeeded];
    return [self contentSize];
} 
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X