我正在使用 UICollectionView 布置一堆单元格,这些单元格按标题的第一个字母划分。每个单元格周围应该有一个非常细的边框,节标题应该有上下边框。这是我当前的原型(prototype):
我按照以下规则实现当前外观:
- 描边每个单元格的右边缘和下边缘。
- 描边每个部分标题的底部边缘。
这很接近我想要的,但是有两个缺陷:
- 如果部分标题前的行未满,则标题顶部的边框会在屏幕右边缘附近停止。
- 在此屏幕截图中不可见,但如果一行 已满,该行中最后一个单元格的右边框仍会绘制,这在屏幕边缘看起来有点奇怪。
解决这个问题的最佳办法是以某种方式告诉每个单元格它是在一个部分的最后一行还是一行中的最后一个单元格;然后单元格将关闭有问题的边框,部分标题将绘制顶部边框和底部边框,一切都将变得很简单。不过,我不知道如何实现。
关于如何管理它的任何想法,或其他获得我想要的外观的方法?我目前正在使用 UICollectionViewFlowLayout。
最佳答案
我结束了 UICollectionViewFlowLayout
的子类化,并在流布局计算了每个单元格的属性后应用了几种启发式方法:
- 如果
center.y
等于该部分中最后一项的center.y
,则该单元格位于该部分的最后一行。 - 如果
CGRectGetMaxY(frame)
等于CGRectGetMaxY(self.collectionView.bounds)
,则单元格再次位于 Collection View 的右边缘。
然后我将这些计算的结果存储在 UICollectionViewLayoutAttributes
的子类中,并编写了一个 UICollectionViewCell
子类,其 -applyLayoutAttributes:
方法将调整其背景 View 根据附加属性绘制的边框。
我把整个乱七八糟的东西都放进了fairly enormous gist这样你就可以准确地看到我做了什么。快乐的黑客。
关于ios - 流布局中的 UICollectionView 单元格边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17592640/