有谁知道为什么在UICollectionView上调用reloadData之后contentSize不会立即更新?

如果您需要知道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.
    });

显然,这是一个相当脆弱的hack,它假设了Apple的实现,但是到目前为止,它已经被证明可以可靠地工作。

是否有人对此有任何其他解决方法或知识?我正在辩论提交雷达,因为这无法理解为什么他们无法在同一运行循环中计算contentSize。这就是UITableView为其整个实现工作的方式。

编辑:此问题用于引用块内的setContentOffset方法,因为我想滚动我的应用程序中的集合 View 。我删除了该方法调用,因为人们的回答集中在为什么不更新contentSize的原因内为什么不使用scrollToItemAtIndexPath。

最佳答案

要在重新加载后获取内容大小,请尝试调用布局对象的collectionViewContentSize。这个对我有用。

关于ios - 在UICollectionView上调用reloadData后,contentSize不更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19103333/

10-11 20:26