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ść.

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


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.


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.


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.


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ę!


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


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.


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.