Chcę użyć automatycznego układu dla UITableViewCells. Te komórki tabeli mają dynamiczną wysokość (w zależności od długości tekstu).Wywołanie "[UIView -systemLayoutSizeFittingSize:]` na UITableViewCell zawsze kończy się niepowodzeniem
Używam [UIView -systemLayoutSizeFittingSize:]
obliczyć odpowiednią wysokość komórek (aby powrócić w [UITableView -heightForRowAtIndexPath:]
), ale wciąż otrzymuję następujące wyniki:
Jeśli mijam
UILayoutFittingCompressedSize
, dostaję z powrotem CGSize od (0, 0).Jeśli mijam
UILayoutFittingExpandedSize
moje app ulega awarii z tego błędu:*** Assertion failure in -[NSISLinearExpression incrementConstant:], /SourceCache/Foundation_Sim/Foundation-1043.1/Layout.subproj/IncrementalSimplex/NSISLinearExpression.m:620
(Domyślam się, że oznacza to niektóre liczba jest nieskończona.)
Moja implementacja jest prosta. Obliczyć wysokość dla każdego obiektu, a następnie buforować go:
MessageCell *cell = // allocate a new cell...
// set up the cell (assign text, images, etc)
CGSize size = [cell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
self.cellHeight = size.height; // size always equals (0, 0)
I hipotezę, że jest to problem z ograniczeniami ustawić, ale:
- Gdybym ręcznie ustawić
cellHeight
dużej wartości , wszystkie komórki wyglądają dobrze, ale wysokość jest zła. - Program Interface Builder nie daje mi żadnych ostrzeżeń dotyczących niejednoznacznych ograniczeń
[cell hasAmbiguousLayout]
zwracaNO
.- Moja komórka ma, między innymi, obraz ustawiony na 48x48, więc rozmiar (0, 0) nie powinien spełniać wszystkich ograniczeń.
Wszelkie pomysły?
spotykam ten sam błąd, jak Twoje, masz go naprawić? – ygweric