使用动态大小的单元格限制UICollectionView的数量

时间:2016-03-17 18:46:14

标签: ios objective-c uicollectionview

我有一个显示用户所具有的音乐兴趣的视图。由于每个兴趣的文本长度不同,我使用UICollectionView来呈现这些项目。

enter image description here

问题是我想将列表的大小限制为只有7行。如果有更多的物品可以放入,我需要在末尾显示一个项目[...],表示还有更多物品。

在上面的例子中,我会更改单词" Grimes"为" ..."。

有没有办法,使用动态大小的UICollectionView单元格,在它在屏幕上呈现之前知道许多项目是否适合给定空间,从而能够将最后一项更改为" ... " (通过删除额外的项目并添加新项目,或通过更新最后一个单元格标题)。

2 个答案:

答案 0 :(得分:2)

你也可以在事后处理它,允许collectionview自行解决并确定它的最后一个单元格,然后抓取collectionView的.visibleCells数组中的最后一个单元格。

[self.collectionView performBatchUpdates:^{
    [self.collectionView reloadData];
} completion:^(BOOL finished) {
    UICollectionViewCell *targetCell = self.collectionView.visibleCells.lastObject;
    targetCell.backgroundColor = [UIColor blueColor];//or whatever needs to change
}];

答案 1 :(得分:0)

我假设你已经有了计算每个项目尺寸的方法。自己实现这种行为并不难。

您需要一种方法来估计项目列表的大小(或行)需求。类似的东西:

func preProcessList(originalList: [Item]) -> (displayList: [Item], needThreeDots: Bool)