UICollectionViewController 中不同的背景和 collectionCell 分隔符颜色

Different background and collectionCell separator color in UICollectionViewController

我必须创建一个 UI,其中连续有 3 个 UICollectionViewCell。所以我使用 UICollectionViewController 创建了它,部分 = 1 并且没有行 = 来自 api。所以我能够创建 6 个单元格,其中每行包含 3 个单元格。这些单元格在垂直和水平方向上以 0.5 pt 分隔。 我已将背景颜色指定给分隔符中的 collectionView。

特别是这是我需要的:-

问题:- 这是我的 UICollectionViewController 要求类型 分隔符需要是红色的,未渲染的 space 需要是黄色的。但我无法做到这一点,我可以为 UICollectionView 使用单一背景颜色,它显示分隔符和免费 space。有没有办法有不同的颜色。

我不想使用 UITableView 并且在 UITableViewCell 中有一个 UICollectionView。我知道这种方法,但我想在 UICollectionViewController.

中做同样的事情

如果我理解你的问题,你可以通过删除单元格之间的 space 来解决这个问题。完全删除 0.5pt space。然后,所有单元格将相互粘在一起,您可以在每个单元格内部创建自己的分隔符。不过,这需要一些逻辑,因为所有单元格不应使用相同的分隔符(如果这样做,则中心单元格的每一侧都会有双分隔符)。

要实现你的照片,你可以设置这些规则:

每行中的 firstlast 单元格应仅在底部显示一个分隔符。 中间的所有其他单元格(在您的情况下,中间的一个单元格)应该在底部左侧显示分隔符, 右侧。

要添加这些分隔符,只需进入您的自定义 UICollectionViewCell 并在每一侧添加一些 UIViews,并将它们的宽度设置为 0.5pt,并根据需要将它们设置为可见。

我建议按照 Sti 的建议使用自定义单元格。我通常这样做。但更简单的方法是:

To add a subview to the collectionView every time you reload data of the collection view.

代码:

let count: CGFloat = CGFloat(items.count)
let numberOfRows: CGFloat = ceil(count / 3.0)
let height: CGFloat = numberOfRows * (cellHeight + seperatorHeight)
if collectionBackView != nil { // controller member object
    collectionBackView.removeFromSuperview()
}

collectionBackView = UIView(frame: 
    CGRect(x: 0, y: 0, width: collectionView.frame.size.width, height: height))
collectionView.addSubview(collectionBackView)
collectionView.sendSubview(toBack: collectionBackView)