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。然后,所有单元格将相互粘在一起,您可以在每个单元格内部创建自己的分隔符。不过,这需要一些逻辑,因为所有单元格不应使用相同的分隔符(如果这样做,则中心单元格的每一侧都会有双分隔符)。
要实现你的照片,你可以设置这些规则:
每行中的 first 和 last 单元格应仅在底部显示一个分隔符。
中间的所有其他单元格(在您的情况下,中间的一个单元格)应该在底部左侧显示分隔符, 和 右侧。
要添加这些分隔符,只需进入您的自定义 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)
我必须创建一个 UI,其中连续有 3 个 UICollectionViewCell
。所以我使用 UICollectionViewController
创建了它,部分 = 1 并且没有行 = 来自 api。所以我能够创建 6 个单元格,其中每行包含 3 个单元格。这些单元格在垂直和水平方向上以 0.5 pt 分隔。
我已将背景颜色指定给分隔符中的 collectionView。
特别是这是我需要的:-
问题:-
这是我的 UICollectionViewController
要求类型
分隔符需要是红色的,未渲染的 space 需要是黄色的。但我无法做到这一点,我可以为 UICollectionView
使用单一背景颜色,它显示分隔符和免费 space。有没有办法有不同的颜色。
我不想使用 UITableView 并且在 UITableViewCell
中有一个 UICollectionView。我知道这种方法,但我想在 UICollectionViewController
.
如果我理解你的问题,你可以通过删除单元格之间的 space 来解决这个问题。完全删除 0.5pt space。然后,所有单元格将相互粘在一起,您可以在每个单元格内部创建自己的分隔符。不过,这需要一些逻辑,因为所有单元格不应使用相同的分隔符(如果这样做,则中心单元格的每一侧都会有双分隔符)。
要实现你的照片,你可以设置这些规则:
每行中的 first 和 last 单元格应仅在底部显示一个分隔符。 中间的所有其他单元格(在您的情况下,中间的一个单元格)应该在底部左侧显示分隔符, 和 右侧。
要添加这些分隔符,只需进入您的自定义 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)