Qual è l'altezza predefinita di UITableViewCell?


166

Ho pensato che questa informazione sarebbe stata più facile da trovare :-)

Qual è l'altezza predefinita di un UITableViewCell? Sembra 44 pixel, ma preferirei esserne sicuro.

Risposte:


361

44 pixel. Decisamente. Non dimenticherò mai quel numero.

44px è anche l'altezza predefinita per UIToolbar e UINavigationBar. (Entrambi passano a 32px quando sono autorizzati all'orientamento orizzontale.)


61
Haha, "Non dimenticherò mai quel numero" suona inquietante ;-)
Rob,

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

4
@MikeyWard: probabilmente l'hai già capito, ma il separatore 1px è incluso in altezza. In realtà copre il contenuto più in basso della cella.
Ben S,

44
Tecnicamente, sono 44 punti. Uscirà a 88 px su un display Retina. Non spaccare i capelli o altro.
Ben Mosher,

23
tableView.rowHeight
Hunter

27

Se si desidera la dimensione predefinita su qualsiasi dispositivo, è possibile utilizzare: UITableViewAutomaticDimension

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

    return UITableViewAutomaticDimension;
}

Sebbene 44 pixel sia attualmente il valore predefinito, questo è un metodo utile se l'app si basa sull'impostazione del valore predefinito.


3
Rinominato UITableView.automaticDimensionsin Swift 4
Bot

Funziona sempre solo se tutto ciò che vuoi è l'altezza predefinita. Se si desidera effettivamente un multiplo dell'altezza predefinita, il valore restituito da questa non è un'altezza effettiva. Apple ha nascosto la vera altezza del punto dietro questo numero magico (che risulta essere -1).
PKCLsoft,

16

Quando style = UITableViewStyleGrouped, l'altezza predefinita delle celle superiore e inferiore è effettivamente 45.0f(non 44.0f). E, se la tabella raggruppata è solo una riga, l'altezza della cella sarà 46.0f.


è compreso il separatore?
lhunath,

10

Se vuoi calcolarlo al volo, basta allocare una cella di tabella fittizia e leggere l'altezza

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

In questo modo difendi dalle modifiche nelle versioni future di iOS, anche se suppongo sia improbabile.


Questo è problematico con autolayout
MobileMon

27
Tutto è problematico con autolayout.
devios1

problematico come, esattamente?
Andrew R

3

"Quando style = UITableViewStyleGrouped, l'altezza predefinita delle celle superiore e inferiore è in realtà 45.0f (non 44.0f). E, se la tabella raggruppata è solo una riga, l'altezza della cella sarà 46.0f." È sbagliato!! 44.0f in effetti! L'ho appena provato!


2

Sembra giusto. Ma per essere sicuri di poter caricare Interface builder, inserisci un UITableViewCell nel progetto, quindi controlla le proprietà delle dimensioni nella finestra di ispezione. Non ho il mio MacBook con me in questo momento, quindi non posso controllare. Ma se non ottieni una risposta migliore da qualcuno, è così che puoi verificare da solo.


Ah, va bene, è da lì che ho preso il 44.
Rob,

2

In Swift 4 e Swift 5 usa semplicemente:

UITableView.automaticDimension

L'uso di 44px non sarà sufficiente perché varierà con densità di pixel dello schermo diverse.


0

Su iOS 12 l'altezza predefinita su dispositivi simili a iPhone X (X, XS, XS Max, XR) è 49pt .

Altri dispositivi su iOS 12 hanno ancora 44pt come impostazione predefinita. È una differenza sottile, ma sembra un buon miglioramento nel confronto diretto.

Se non mi credi, misura per te stesso in questo screenshot (non dimenticare di dividere per 3) ...;)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.