Desidero utilizzare il layout automatico per UITableViewCells. Queste celle di tabella hanno un'altezza dinamica (a seconda della lunghezza del testo).Chiamare `[UIView -systemLayoutSizeFittingSize:]` su un UITableViewCell fallisce sempre
sto usando [UIView -systemLayoutSizeFittingSize:]
per calcolare l'altezza della cella appropriata (per tornare in [UITableView -heightForRowAtIndexPath:]
), ma continuo a ricevere i seguenti risultati:
Se mi passa
UILayoutFittingCompressedSize
, torno un CGSize di (0, 0).Se mi passa
UILayoutFittingExpandedSize
, i miei applicazione si blocca con questo errore:*** Assertion failure in -[NSISLinearExpression incrementConstant:], /SourceCache/Foundation_Sim/Foundation-1043.1/Layout.subproj/IncrementalSimplex/NSISLinearExpression.m:620
(La mia ipotesi è che questo significa qualche numero è infinito.)
mia implementazione è semplice. A calcolare l'altezza di ciascun oggetto, e quindi nella cache è:
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)
ipotizzo che questo è un problema con i vincoli che ho impostato, ma:
- Se fisso manualmente
cellHeight
un valore elevato , le celle sembrano tutte belle, tranne che l'altezza è sbagliata. - Interface Builder non mi avvisa di restrizioni ambigue
[cell hasAmbiguousLayout]
restituisceNO
.- La mia cella ha, tra le altre cose, un'immagine impostata su 48x48, quindi una dimensione di (0, 0) non dovrebbe soddisfare tutti i vincoli.
Qualche idea?
ho incontrare lo stesso problema come il vostro, hanno a risolvere il problema? – ygweric