Sono curioso quando la dimensione del contenuto di UITableView viene aggiornata dopo aver fatto una chiamata di inserimento/cancellazione dell'animazione. Ho pensato che sarebbe stato come la maggior parte dei blocchi [Animazione UIView ...] in quanto la dimensione del frame/dimensione del contenuto sarebbe stata aggiornata immediatamente anche se l'animazione non è stata completata, ma non sembra essere così. Qualche idea?Quando si aggiorna la dimensione del contenuto di UITableView con l'inserimento/eliminazione dell'anima
risposta
La dimensione contenuto sarà cambiato dopo aver chiamato i delegati circa all'altezza:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
Grazie per la risposta. Posso comunque ricevere una notifica o qualsiasi tipo di metodo delegato che mi dirà che la dimensione del contenuto è cambiata? Sembra che dopo l'animazione sia completa ma spero di ottenere la nuova dimensione del contenuto PRIMA così posso animare le cose attorno al tavolo di conseguenza – SLEW
Ho provato questo e ho messo le dichiarazioni di registro prima e dopo ho chiamato tableview: heightForRowAtIndexPath: metodo e non ho visto la dimensione del contenuto aggiornata. Tuttavia, questo mi ha aiutato a portarmi a una soluzione per calcolare quale sarà la dimensione del contenuto. Pubblicherò la soluzione come risposta separata. – Daren
Purtroppo, non sono stato in grado di trovare un buon modo per aggiornare il contentSize quando si aggiungono/cancellazione di righe da un'UITableView sia, ma Ho trovato un modo per calcolare quale sarà se conosci i percorsi dell'indice delle celle che stai aggiungendo/rimuovendo.
Utilizzando il percorso indice delle righe modificate, è possibile calcolare le altezze delle rispettive celle con tableView: heightForRowAtIndexPath: metodo e aggiungere al formato altezza attuale contenuto della vista tabella. Ecco un esempio, se si sta aggiungendo una sola riga:
[self.tableView insertRowsAtIndexPaths:@[indexPathOfNewRow] withRowAnimation:UITableViewRowAnimationAutomatic];
CGFloat newCellHeight = [self tableView:self.tableView heightForRowAtIndexPath:indexPathOfNewRow];
CGFloat newContentSizeHeight = self.tableView.contentSize.height + newCellHeight
Sembra sizeThatFits()
può esporre l'altezza di una nuova contentSize
che è in attesa. È quindi possibile assegnare le dimensioni in sospeso per risolverle in anticipo per le animazioni di scorrimento.
con qualcosa di simile:
extension UIScrollView {
var pendingContentSize: CGSize {
var tallSize = contentSize
tallSize.height = .greatestFiniteMagnitude
return sizeThatFits(tallSize)
}
func scrollToBottom(animated: Bool) {
contentSize = pendingContentSize
let contentRect = CGRect(origin: .zero, size: contentSize)
let (bottomSlice, _) = contentRect.divided(atDistance: 1, from: .maxYEdge)
guard !bottomSlice.isEmpty else { return }
scrollRectToVisible(bottomSlice, animated: animated)
}
}
Sono in grado di scrivere visualizzazione del codice di controllo in questo modo:
tableView.insertRows(at: [newIndexPath], with: .none)
tableView.scrollToBottom(animated: true)
e avere il tavolo scorrere tutta la strada fino in fondo (con il nuovo dimensione del contenuto) invece di scorrere verso il basso fino alla penultima riga (utilizzando la vecchia dimensione del contenuto).
- 1. UITableView nello storyboard che non aggiorna la dimensione del contenuto a rotazione
- 2. UITextView non aggiorna il suo contenuto Dimensione
- 3. UITableView non si aggiorna
- 4. Problema nell'adattare la dimensione della cella excel alla dimensione del contenuto quando si utilizza apache poi
- 5. UITableView Aggiorna senza scorrere
- 6. La dimensione intrinseca non si aggiorna quando si cambia lo stato di UIButton
- 7. lunghezza del contenuto quando si utilizza la compressione http
- 8. Div Dimensione Dimensione del contenuto automatica
- 9. iOS - UITableView aggiorna la tabella correttamente?
- 10. Come cambiare la dimensione del carattere di cellula UITableView
- 11. Problema relativo alle dimensioni del contenuto per UITableView in UIscrollView
- 12. UISearchBar si sovrappone a UITableView quando attivo
- 13. UITableView dimensioni del contenuto durante l'utilizzo del layout automatico
- 14. UITableView non si aggiorna correttamente dopo aver modificato dataSource
- 15. Come impostare la dimensione del contenuto di NSScrollView?
- 16. Controlla la dimensione del contenuto in una finestra di zenity?
- 17. Come impostare dinamicamente la dimensione del contenuto di UIScrollView
- 18. WKWebView + contentInset rende errata la dimensione del contenuto
- 19. UILabel non si aggiorna
- 20. UITableView Scorre in alto nella cella Aggiorna
- 21. Come evitare di chiamare onbeforeunload quando si aggiorna la pagina
- 22. Quando si utilizza scrollTo ListView non si aggiorna, ma quando lo scorre manualmente si aggiorna
- 23. Come si aggiorna il contenuto in un popup di Opuscolo?
- 24. Android SimpleCursorAdapter non si aggiorna quando le modifiche del database
- 25. moveRowAtIndexPath non aggiorna il contenuto della cella
- 26. L'intero contenuto di UIWebView incorporato in UITableView
- 27. UITableView smette di scorrere quando si aggiungono nuove righe
- 28. Il contenuto UITableView si sovrappone alla barra di stato quando UISearchBar è attivo
- 29. Dimensione dell'elemento di transizione causata dalle modifiche del contenuto
- 30. Come rendere UITableView adatto alle dimensioni del contenuto
Hai risolto questo? Sto incontrando lo stesso problema. Inserendo/eliminando le righe ci si aspetta che tableView.contentSize sia aggiornato, ma sembra essere asincrono. – VaporwareWolf