我有一个显示用户所具有的音乐兴趣的视图。由于每个兴趣的文本长度不同,我使用UICollectionView来呈现这些项目。
问题是我想将列表的大小限制为只有7行。如果有更多的物品可以放入,我需要在末尾显示一个项目[...],表示还有更多物品。
在上面的例子中,我会更改单词" Grimes"为" ..."。
有没有办法,使用动态大小的UICollectionView单元格,在它在屏幕上呈现之前知道许多项目是否适合给定空间,从而能够将最后一项更改为" ... " (通过删除额外的项目并添加新项目,或通过更新最后一个单元格标题)。
答案 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)