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.

Rob
la source

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.)

Marco
la source
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.

simon_smiley
la source
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.

ma11hew28
la source
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.

cerveau
la source
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!

franc
la source
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.

Ziltoid
la source
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.

Dan Bray
la source
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) ...;)

fl034
la source