动态大小的 collectionView 单元导致可见性问题 - iOS
Dynamic sized collectionView cell causing visibility issue - iOS
我有一个 3 列和多行的 Collection 视图。在我的 sizeForItemAtIndexPath
中,我 return 一个像这样的动态 CGSize
:
return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7, (_sponsoredCollectionView.frame.size.width/3 - 7 + nameHeight + cuisineHeight + addressHeight + timingHeight + paddings));
但是在上面的尺寸下,我的最后一个单元格没有显示(我不明白为什么,因为 returned 的高度与之前的单元格相似并且有很多 space 以显示它,就像以前的单元格一样),请参见下面的屏幕截图:
当我将大小硬编码为以下内容时:
return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7,250);
已显示(带有 KEKOU 标题的单元格,但显然由于硬编码 250 高度,上下有很多空 spaces,请参见下面的屏幕截图:
此外,我正在执行以下操作,以便 CollectionView 在重新加载后根据单元格调整大小
[_sponsoredCollectionView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
_sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 0;
});
我无法理解问题所在:S 请帮助!
经过一整夜的反复试验和研究,我终于解决了这个问题,只需像这样更改 performBatchUpdates
中的 _sponsoredCollectionViewHeightConstraint.constant
:
[_sponsoredCollectionView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
[self.sponsoredCollectionView performBatchUpdates:^{
_sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 5;//_sponsoredCollectionView.contentSize.height + 5;
} completion:nil];
});
我有一个 3 列和多行的 Collection 视图。在我的 sizeForItemAtIndexPath
中,我 return 一个像这样的动态 CGSize
:
return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7, (_sponsoredCollectionView.frame.size.width/3 - 7 + nameHeight + cuisineHeight + addressHeight + timingHeight + paddings));
但是在上面的尺寸下,我的最后一个单元格没有显示(我不明白为什么,因为 returned 的高度与之前的单元格相似并且有很多 space 以显示它,就像以前的单元格一样),请参见下面的屏幕截图:
当我将大小硬编码为以下内容时:
return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7,250);
已显示(带有 KEKOU 标题的单元格,但显然由于硬编码 250 高度,上下有很多空 spaces,请参见下面的屏幕截图:
此外,我正在执行以下操作,以便 CollectionView 在重新加载后根据单元格调整大小
[_sponsoredCollectionView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
_sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 0;
});
我无法理解问题所在:S 请帮助!
经过一整夜的反复试验和研究,我终于解决了这个问题,只需像这样更改 performBatchUpdates
中的 _sponsoredCollectionViewHeightConstraint.constant
:
[_sponsoredCollectionView reloadData];
dispatch_async(dispatch_get_main_queue(), ^{
[self.sponsoredCollectionView performBatchUpdates:^{
_sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 5;//_sponsoredCollectionView.contentSize.height + 5;
} completion:nil];
});