Jaka jest domyślna wysokość UITableViewCell?

166

Pomyślałem, że łatwiej byłoby znaleźć te informacje :-)

Jaka jest domyślna wysokość UITableViewCell? Wygląda na 44 piksele, ale wolałbym mieć pewność.

Obrabować
źródło

Odpowiedzi:

361

Ma 44 piksele. Zdecydowanie. Nigdy nie zapomnę tego numeru.

44 piksele to także domyślna wysokość UIToolbar i UINavigationBar. (Oba przełączają się na 32 piksele po automatycznym obróceniu do orientacji poziomej).

Marco
źródło
61
Haha, "Nigdy nie zapomnę tego numeru" brzmi złowieszczo ;-)
Rob
4
@antony: view.bounds.size.height
samvermette
4
@MikeyWard: Prawdopodobnie już to rozgryzłeś, ale separator 1px jest uwzględniony w wysokości. W rzeczywistości obejmuje najbardziej dolną zawartość komórki.
Ben S,
44
Technicznie to 44 punkty. Na wyświetlaczu Retina osiągnie 88 pikseli. Nie dzielić włosów ani nic.
Ben Mosher
23
tableView.rowHeight
Hunter
27

Jeśli chcesz mieć domyślny wymiar na dowolnym urządzeniu, możesz użyć: UITableViewAutomaticDimension

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

    return UITableViewAutomaticDimension;
}

Chociaż 44 piksele są obecnie domyślnymi, jest to przydatna metoda, jeśli Twoja aplikacja polega na ustawieniu wartości domyślnej.

simon_smiley
źródło
3
Zmieniono nazwę na UITableView.automaticDimensionsw Swift 4
Bot
Działa to zawsze tylko wtedy, gdy wszystko, czego chcesz, to domyślna wysokość. Jeśli faktycznie potrzebujesz wielokrotności domyślnej wysokości, wartość zwrócona przez to nie jest rzeczywistą wysokością. Firma Apple ukryła prawdziwą wysokość punktu za tą magiczną liczbą (która okazuje się być -1).
PKCLsoft
16

Kiedy style = UITableViewStyleGrouped, w rzeczywistości domyślna wysokość górnych i dolnych komórek to 45.0f(nie 44.0f). A jeśli zgrupowana tabela zawiera tylko jeden wiersz, wysokość komórki będzie wynosić 46.0f.

ma11hew28
źródło
czy to obejmuje separator?
lhunath
10

Jeśli chcesz obliczyć to w locie, po prostu przydziel fikcyjną komórkę tabeli i odczytaj jej wysokość

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

W ten sposób bronisz się przed zmianami w przyszłych wersjach iOS, choć przypuszczam, że jest to mało prawdopodobne.

mózgów
źródło
Jest to problematyczne z automatycznym układem
MobileMon,
27
Z autoukładaniem wszystko jest problematyczne.
devios1
problematyczne, jak dokładnie?
AndrewR
3

„Gdy style = UITableViewStyleGrouped, domyślna wysokość górnych i dolnych komórek to w rzeczywistości 45,0f (nie 44,0f). Jeśli zgrupowana tabela ma tylko jeden wiersz, wysokość komórki będzie wynosić 46,0f.” To jest źle!! W rzeczywistości 44.0f! Po prostu to testuję!

szczery
źródło
2

Brzmi dobrze. Ale aby mieć pewność, że można załadować narzędzie do tworzenia interfejsów, umieść UITableViewCell w projekcie, a następnie sprawdź właściwości rozmiaru w oknie Inspector. Nie mam teraz ze sobą MacBooka, więc nie mogę tego sprawdzić. Ale jeśli nie otrzymasz od kogoś lepszej odpowiedzi, w ten sposób możesz sam sprawdzić.

Ziltoid
źródło
Ach, okej, od tego pierwotnie wziąłem 44.
Rob
2

W Swift 4 i Swift 5 po prostu użyj:

UITableView.automaticDimension

Użycie 44px nie wystarczy, ponieważ będzie się różnić w zależności od gęstości pikseli na ekranie.

Dan Bray
źródło
0

W systemie iOS 12 domyślna wysokość na urządzeniach takich jak iPhone X (X, XS, XS Max, XR) to 49 pkt .

Inne urządzenia z systemem iOS 12 nadal mają domyślnie 44 pkt . To subtelna różnica, ale w bezpośrednim porównaniu wydaje się dobra poprawa.

Jeśli mi nie wierzysz, zmierz się na tym zrzucie ekranu (nie zapomnij podzielić przez 3) ...;)

fl034
źródło