我正在尝试实现一个由灰线分隔的简单小矩形单元网格。此外,我的收藏品视图的四个角落应该有圆角。
我发现我无法在 cornerRadius
图层上设置 UICollectionView
,因为这会使整个{{1}在一个'框中'滚动等看起来很奇怪。看起来我必须绕过每个角落的4个细胞的角落。
我遇到了
的挑战我会感激一些指示。我设法做到了,但使用图形为顶部,底部,左,右边框以及模拟圆形边缘。这对我来说很有用,因为我的网格有固定的值,所以我可以计算并计算每个单元格在网格中的位置。
谢谢!
答案 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