Quelle est la hauteur par défaut de UITableViewCell?


166

Je pensais que ces informations auraient été plus faciles à trouver :-)

Quelle est la hauteur par défaut d'un UITableViewCell? Cela ressemble à 44 pixels, mais je préfère être sûr.

Réponses:


361

C'est 44 pixels. Absolument. Je n'oublierai jamais ce numéro.

44px est également la hauteur par défaut pour UIToolbar et UINavigationBar. (Les deux passent à 32 pixels lorsqu'ils sont automatiquement mis en orientation paysage.)


61
Haha, "Je n'oublierai jamais ce nombre" semble inquiétant ;-)
Rob

4
@antony: view.bounds.size.height
samvermette

4
@MikeyWard: Vous l'avez probablement déjà compris, mais le séparateur 1px est inclus dans la hauteur. Il couvre en fait le contenu le plus bas de la cellule.
Ben S le

44
Techniquement, c'est 44 points. Il sortira à 88px sur un écran Retina. Ne pas couper les cheveux ou quoi que ce soit.
Ben Mosher

23
tableView.rowHeight
Hunter

27

Si vous voulez la dimension par défaut sur n'importe quel appareil, vous pouvez utiliser: UITableViewAutomaticDimension

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewAutomaticDimension;
}

Bien que 44 pixels soit actuellement la valeur par défaut, il s'agit d'une méthode utile si votre application repose sur la définition de la valeur par défaut.


3
A été renommé UITableView.automaticDimensionsen Swift 4
Bot

Cela ne fonctionne que si tout ce que vous voulez est la hauteur par défaut. Si vous voulez réellement un multiple de la hauteur par défaut, la valeur renvoyée par ceci n'est pas une hauteur réelle. Apple a caché la vraie hauteur de point derrière ce nombre magique (qui se trouve être -1).
PKCLsoft

16

Quand style = UITableViewStyleGrouped , la hauteur par défaut des cellules du haut et du bas est en fait 45.0f(non 44.0f). Et, si le tableau groupé ne comporte qu'une seule ligne, la hauteur de la cellule sera 46.0f.


est-ce que cela inclut le séparateur?
lhunath

10

Si vous voulez calculer cela à la volée, allouez simplement une cellule de table fictive et lisez sa hauteur

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
int height = cell.frame.size.height ;

De cette façon, vous vous défendez contre les changements dans les futures versions d'iOS, même si je suppose que c'est peu probable.


Ceci est problématique avec la mise en page automatique
MobileMon

27
Tout est problématique avec la mise en page automatique.
devios1

problématique comment, exactement?
AndrewR

3

"Lorsque style = UITableViewStyleGrouped, la hauteur par défaut des cellules du haut et du bas est en fait de 45,0f (et non 44,0f). Et, si le tableau groupé ne comporte qu'une seule ligne, la hauteur de la cellule sera de 46,0f." C'est faux!! 44.0f en fait! Je viens de le tester!


2

Cela semble juste. Mais pour être sûr de pouvoir charger le générateur d'interface, insérez un UITableViewCell dans le projet, puis vérifiez les propriétés de taille dans la fenêtre Inspecteur. Je n'ai pas mon MacBook avec moi pour le moment, je ne peux donc pas vérifier. Mais si vous n'obtenez pas une meilleure réponse de quelqu'un, c'est ainsi que vous pouvez vérifier par vous-même.


Ah, d'accord, c'est de là que j'ai eu le 44.
Rob

2

Dans Swift 4 et Swift 5, utilisez simplement:

UITableView.automaticDimension

L'utilisation de 44 pixels ne suffira pas car elle variera en fonction des différentes densités de pixels de l'écran.


0

Sur iOS 12, la hauteur par défaut sur les appareils comme l'iPhone X (X, XS, XS Max, XR) est de 49 pt .

Les autres appareils sur iOS 12 ont toujours 44 pt par défaut. C'est une différence subtile, mais cela ressemble à une bonne amélioration en comparaison directe.

Si vous ne me croyez pas, mesurez par vous-même dans cette capture d'écran (n'oubliez pas de diviser par 3) ...;)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.