我对UICollectionView
有点新意,我正在尝试构建一个垂直的项目列表,每行只有一列/只有一个项目。
在每个UICollectionViewCell
之间我想要一个分隔线,类似于UITableView
的分隔符。 (不,由于其他原因,我不能将UITableView
用于此目的。)
我应该如何完成这项工作?只需在每个单元格中添加1px高UIView
?使用“补充观点”?使用“装饰视图”?我迷路了,没有教程似乎表明这里最好的。
重新实现完整的UICollectionViewLayout
以获得一些线条似乎很荒谬,但在每个单元格中抛出线条似乎很草率。我该怎么办?
答案 0 :(得分:2)
我认为问题在于连接流布局
您可以在viewDidLoad
中编写此代码UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
//You can provide vertical
[flowLayout setMinimumInteritemSpacing:0.0f];
[flowLayout setMinimumLineSpacing:0.0f];
[self.pictureCollectionView setPagingEnabled:YES];
[self.pictureCollectionView setCollectionViewLayout:flowLayout];
[self.pictureCollectionView setBackgroundColor:[UIColor whiteColor]];
将此设置为您的流程布局。我曾经做过一个只有一行和一列的幻灯片放映,并将其添加为流布局。
稍后使用UIEdgeInsets或绘制集合单元格的边框
答案 1 :(得分:2)
Apple的Collection View Programming Guide for iOS说(我强调):
装饰视图是可视化装饰,可增强集合视图布局的外观。与单元格和补充视图不同,装饰视图仅提供可视内容,因此独立于数据源。您可以使用它们来提供自定义背景,填充单元格周围的空间,甚至可以根据需要隐藏单元格。
因此装饰视图应该是分隔符的理想选择。补充视图不合适,因为数据源不需要自定义每个分隔符。
也就是说,如果您的要求不是太严格,那么在单元格中添加分隔符可能更容易实现。您是否需要在第一个项目之前或之后隐藏分隔符?如果这不重要,您可以在单元格中添加分隔符,并在几分钟内完成。
更新:我在使用装饰视图时发现插入和删除动画,因为分隔符效果不佳,所以如果您需要动画更新,请不要使用装饰视图。
答案 2 :(得分:0)
在 Apple 的 WWDC 2020 的 Implementing Modern CollectionViews 示例代码中,他们通过在单元格底部添加一个分隔符视图并在它是部分中的最后一个单元格时将其隐藏来实现此目的。
let numberOfItemsInSection = self.currentSnapshot.numberOfItems(inSection: sectionIdentifier)
let isLastCell = indexPath.item + 1 == numberOfItemsInSection
cell.seperatorView.isHidden = isLastCell