Pomimo ustawienia ograniczeń dla wszystkich elementów, w tym pionowych potrzebnych komórce do obliczenia jej wysokości, auto-układ wydaje się być ignorowany: wszystkie komórki są ściśnięte.
Oto zrzut ekranu wyniku i ograniczeń w scenorysie.
W VC, który przechowuje tableView, oto kod w viewDidLoad:
tableView.estimatedRowHeight = 120.0
tableView.rowHeight = UITableViewAutomaticDimension
Skomentowanie drugiej linii daje komórki o wysokości 120,0, ale automatyczne układanie jest również ignorowane.
Dzięki
Aktualizacja
Aby uprościć interfejs, zostawiłem jedną etykietę z ograniczeniami:
- Wiodąca przestrzeń do superviewu
- Najlepsza przestrzeń do nadzoru
- Stała szerokość i wysokość (100 i 100)
- Od dołu do marginesu kontenera, aby upewnić się, że komórka ma wszystkie pionowe ograniczenia określające jej wysokość
A dzięki temu uproszczonemu interfejsowi autoukład nadal nie jest brany pod uwagę, co sugeruje, że problem nie wynikał ze źle ustawionych ograniczeń.
W Inspektorze rozmiaru wysokość wiersza jest ustawiona na 120 i zaznaczona jest opcja Niestandardowa. Komórka ma odpowiednią klasę niestandardową, identyfikator ponownego wykorzystania komórki jest poprawny.
Aktualizacja: znaleziono rozwiązanie
To był prosty błąd, zobacz moją odpowiedź poniżej.
źródło
Odpowiedzi:
Autoukład został zignorowany, ponieważ zarówno prototypowa komórka, jak i UIView komórki otrzymały niestandardową klasę komórek w IB.
Ustawienie UIView z powrotem na klasę UIView rozwiązało problem.
źródło
Myślę, że problem polega na tym, że wdrażasz:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return x }
Musisz usunąć tę funkcję, aby widok tabeli mógł obliczyć automatyczną wysokość komórek.
źródło