在网格的每个角落都有圆角的Collectionview网格

时间:2015-11-02 13:52:09

标签: ios objective-c uicollectionview rounded-corners

我正在尝试实现一个由灰线分隔的简单小矩形单元网格。此外,我的收藏品视图的四个角落应该有圆角

我发现我无法在 cornerRadius 图层上设置 UICollectionView ,因为这会使整个{{1}在一个'框中'滚动等看起来很奇怪。看起来我必须绕过每个角落的4个细胞的角落。

我遇到了

的挑战
  1. 在4个角单元格上设置圆角WHILST
  2. 在单元格之间设置实际边框
  3. 我会感激一些指示。我设法做到了,但使用图形为顶部,底部,左,右边框以及模拟圆形边缘。这对我来说很有用,因为我的网格有固定的值,所以我可以计算并计算每个单元格在网格中的位置。

    谢谢!

1 个答案:

答案 0 :(得分:2)

您可以通过执行类似

的操作来设置单元格的边框
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    UICollectionViewCell *cell = [...]

    if (indexPath.row == 0 && indexPath.section == 0) { // top left

        [self roundView:cell.view onCorner:UIRectCornerTopLeft radius:yourRadius];

    } else [...]

}

我建议您使用与下一个类似的功能来舍入单元格的角落

- (void)roundView:(UIView *)view onCorner:(UIRectCorner)rectCorner radius:(float)radius {
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:rectCorner cornerRadii:CGSizeMake(radius, radius)];
    CAShapeLayer *maskLayer = [CAShapeLayer new];
    maskLayer.frame = view.bounds;
    maskLayer.path = maskPath.CGPath;
    [view.layer setMask:maskLayer];
}

要设置单元格之间的边框,您应该创建自定义UICollectionViewFlowLayout并使用方法设置所有单元格的框架

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect