¿Cuál es la altura predeterminada de UITableViewCell?

166

Pensé que esta información habría sido más fácil de encontrar :-)

¿Cuál es la altura predeterminada de un UITableViewCell? Parece 44 píxeles, pero preferiría estar seguro.

Robar
fuente

Respuestas:

361

Son 44 píxeles. Seguro. Nunca olvidaré ese número.

44px es también la altura predeterminada para UIToolbar y UINavigationBar. (Ambos cambian a 32px cuando se autorotata a orientación horizontal)

Marco
fuente
61
Jaja, "Nunca olvidaré ese número" suena ominoso ;-)
Rob
44
@antony: view.bounds.size.height
samvermette el
44
@MikeyWard: Probablemente ya lo haya descubierto, pero el separador de 1px está incluido en la altura. En realidad, cubre el contenido más inferior de la célula.
Ben S
44
Técnicamente, son 44 puntos. Saldrá a 88 px en una pantalla Retina. No para partir cabellos ni nada.
Ben Mosher
23
tableView.rowHeight
Hunter
27

Si desea la dimensión predeterminada en cualquier dispositivo que pueda usar: UITableViewAutomaticDimension

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

    return UITableViewAutomaticDimension;
}

Aunque 44 píxeles es actualmente el predeterminado, este es un método útil si su aplicación se basa en tener el valor predeterminado establecido.

simon_smiley
fuente
3
Se le cambió el nombre a UITableView.automaticDimensionsSwift 4
Bot
Esto solo funciona si lo único que desea es la altura predeterminada. Si realmente desea un múltiplo de la altura predeterminada, el valor devuelto por esta no es una altura real. Apple ha ocultado la verdadera altura del punto detrás de este número mágico (que resulta ser -1).
PKCLsoft
16

Cuando style = UITableViewStyleGrouped, la altura predeterminada de las celdas superior e inferior es en realidad 45.0f(no 44.0f). Y, si la tabla agrupada es solo una fila, la altura de la celda será 46.0f.

ma11hew28
fuente
¿eso incluye el separador?
lhunath
10

Si desea calcular esto sobre la marcha, simplemente asigne una celda de tabla ficticia y lea su altura

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

De esta manera te defiendes de los cambios en futuras versiones de iOS, aunque supongo que es poco probable.

brainjam
fuente
Esto es problemático con la distribución automática
MobileMon
27
Todo es problemático con el autolayout.
devios1
problemático cómo, exactamente?
AndrewR
3

"Cuando style = UITableViewStyleGrouped, la altura predeterminada de las celdas superior e inferior es en realidad 45.0f (no 44.0f). Y, si la tabla agrupada es solo una fila, la altura de la celda será 46.0f". ¡¡Está incorrecto!! ¡44.0f de hecho! ¡Solo lo pruebo!

franco
fuente
2

Eso suena bien. Pero para asegurarse de que puede cargar el generador de interfaces, coloque un UITableViewCell en el proyecto y luego verifique las propiedades de tamaño en la ventana del Inspector. No tengo mi MacBook conmigo en este momento, así que no puedo verificarlo. Pero si no obtiene una mejor respuesta de alguien, así es como puede verificarlo usted mismo.

Ziltoide
fuente
Ah, está bien, ahí es donde originalmente obtuve el 44.
Rob
2

En Swift 4 y Swift 5 simplemente use:

UITableView.automaticDimension

Usar 44px no será suficiente porque variará con las diferentes densidades de píxeles de la pantalla.

Dan Bray
fuente
0

En iOS 12, la altura predeterminada en dispositivos similares al iPhone X (X, XS, XS Max, XR) es de 49 puntos .

Otros dispositivos en iOS 12 todavía tienen 44 puntos por defecto. Es una diferencia sutil, pero se siente como una buena mejora en comparación directa.

Si no me crees, mide por ti mismo en esta captura de pantalla (no olvides dividir por 3) ...;)

fl034
fuente