Кто-нибудь знает, почему contentSize не обновляется сразу после вызова reloadData в UICollectionView?
Если вам нужно знать contentSize, лучшая работа, которую я нашел, заключается в следующем:
[_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.
});
Очевидно, что это довольно хрупкий хак, который делает предположения о реализации Apple, но до сих пор он работал достаточно надежно.
Есть ли у кого-нибудь другие обходные пути или знания о том, почему это происходит? Я обсуждаю отправку радара, потому что я не могу понять, почему они не могут вычислить contentSize в том же цикле выполнения. Именно так UITableView работал на протяжении всей своей реализации.
РЕДАКТИРОВАТЬ: этот вопрос используется для ссылки на метод setContentOffset внутри блока, потому что я хочу прокрутить представление коллекции в своем приложении. Я удалил вызов метода, потому что ответы людей были сосредоточены на том, почему я не использовал scrollToItemAtIndexPath внутри, почему не обновляется contentSize.
layoutIfNeeded
наUICollectionView
, прежде чем получить доступ к егоcontentSize
- person onmyway133   schedule 05.03.2020