Adakah yang tahu mengapa contentSize tidak segera diperbarui setelah reloadData dipanggil di UICollectionView?
Jika Anda perlu mengetahui contentSize, solusi terbaik yang saya temukan adalah sebagai berikut:
[_collectionView reloadData];
double delayInSeconds = 0.0001;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void)
{
// TODO: Whatever it is you want to do now that you know the contentSize.
});
Tentu saja ini adalah peretasan yang cukup rapuh yang membuat asumsi terhadap penerapan Apple, namun sejauh ini terbukti berhasil dengan cukup andal.
Adakah yang punya solusi atau pengetahuan lain tentang mengapa hal ini terjadi? Saya sedang berdebat untuk mengirimkan radar karena ini saya tidak mengerti mengapa mereka tidak dapat menghitung contentSize dalam run loop yang sama. Begitulah cara kerja UITableView untuk seluruh implementasinya.
EDIT: Pertanyaan ini digunakan untuk mereferensikan metode setContentOffset di dalam blok karena saya ingin menggulir tampilan koleksi di aplikasi saya. Saya telah menghapus pemanggilan metode karena jawaban orang berfokus pada mengapa saya tidak menggunakan scrollToItemAtIndexPath di dalam mengapa contentSize tidak diperbarui.
layoutIfNeeded
diUICollectionView
sebelum mengaksescontentSize
-nya - person onmyway133   schedule 05.03.2020