Ho uno UITableView
non scorrevole in un UIScrollView
. Ho impostato la dimensione del fotogramma di UITableView
in base alle dimensioni del suo contenuto.Quando viene impostato un contentSize di UITableView?
Quando aggiungo una riga a UITableView
, chiamo insertRowsAtIndexPaths:withRowAnimation
: su UITableView
. Poi io chiamo un metodo per ridimensionare la cornice del UITableView
:
- (void)resizeTableViewFrameHeight
{
// Table view does not scroll, so its frame height should be equal to its contentSize height
CGRect frame = self.tableView.frame;
frame.size = self.tableView.contentSize;
self.tableView.frame = frame;
}
Sembra però che il contentSize
non è stato aggiornato a questo punto. Se calcoli manualmente il frame nel metodo precedente in base al numero di righe e sezioni, il metodo funziona correttamente.
La mia domanda è, come posso ottenere il UITableView
per aggiornare il suo contentSize
? Suppongo che potrei chiamare reloadData
e che probabilmente lo farebbe, ma sembra inefficiente ricaricare l'intera tabella quando sto solo inserendo una cella.
Ho provato questo, ma non ha funzionato per me. Ma sono riuscito a trovare un'altra soluzione che ho postato qui: http://stackoverflow.com/questions/17634617/when-does-uitableview-content-size-update-with-row-insert-delete-animation/18665064 # 18665064 – Daren
Oh, questo è solo per il contenuto iniziale. Il tuo chilometraggio può variare per gli altri casi quando la dimensione viene modificata in seguito. – Farthen
Nota per coloro per i quali questo non funziona - tableView: estimatedHeightForRowAtIndexPath crea problemi con contentSize, quindi potresti avere fortuna semplicemente rimuovendo la tua implementazione. – weienw