1

我有一个 3 列和多行的集合视图。在我的sizeForItemAtIndexPath中,我返回这样的动态CGSize

return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7, (_sponsoredCollectionView.frame.size.width/3 - 7 + nameHeight + cuisineHeight + addressHeight + timingHeight + paddings));

但是对于上述大小,我的最后一个单元格没有显示(我不明白为什么,因为返回的高度与以前的单元格相似,并且有很多空间可以显示,就像以前的单元格一样),请参见下面的屏幕截图: 在此处输入图像描述

当我将大小硬编码为以下内容时:

return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7,250);

它显示(带有 KEKOU 标题的单元格,但由于硬编码 250 高度,显然上下有很多空格,请参见下面的屏幕截图: 在此处输入图像描述

另外,我正在执行以下操作,以便 CollectionView 在重新加载后根据单元格调整大小

[_sponsoredCollectionView reloadData];

dispatch_async(dispatch_get_main_queue(), ^{
  _sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 0;
});

我无法理解是什么问题:S 请帮助!

4

1 回答 1

1

最后经过一整夜的反复试验和研究,我通过改变_sponsoredCollectionViewHeightConstraint.constant内部来解决它performBatchUpdates

[_sponsoredCollectionView reloadData];

dispatch_async(dispatch_get_main_queue(), ^{
                        [self.sponsoredCollectionView performBatchUpdates:^{
                            _sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 5;//_sponsoredCollectionView.contentSize.height + 5;
                        } completion:nil];
                    });
于 2019-03-27T08:54:06.140 回答