我制作了自定义uiTableViewCell,并将其用作UITableview,就像屏幕截图一样。 问题是分组表上的第一个和最后一个单元格的圆角。
如何制作拳头和最后一个细胞角落
答案 0 :(得分:3)
将tableView作为属性添加到您的单元格,并将其设置在您的控制器中:
@property (nonatomic, weak) UITableView *tableView;
然后你可以像这样实现它:
- (void)layoutSubviews {
[super layoutSubviews];
UIRectCorner rectCorner;
BOOL roundCorners = YES;
NSIndexPath *indexPath = [self.tableView indexPathForCell:self];
NSInteger numberOfRows = [self.tableView numberOfRowsInSection:indexPath.section];
if (numberOfRows == 1) { // single cell
rectCorner = UIRectCornerAllCorners;
} else if (indexPath.row == numberOfRows - 1) { // bottom cell
rectCorner = UIRectCornerBottomLeft | UIRectCornerBottomRight;
} if (indexPath.row == 0) { // top cell
rectCorner = UIRectCornerTopLeft | UIRectCornerTopRight;
} else {
roundCorners = NO;
}
if (roundCorners) {
CGFloat cornerRadius = 10.0;
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
byRoundingCorners:rectCorner
cornerRadii:CGSizeMake(cornerRadius, cornerRadius)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;
self.layer.mask = maskLayer;
}
}
您可以通过检查tableView
(之前的iOS7,self.superview.superview
来避免在{}上使用self.superview
,但我认为这是一种更清晰且不易出错的方式。
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试设置细胞的背景颜色clearColor:您的桌子似乎有圆角,但您的细胞正在覆盖它。另一种替代解决方案可能是更改表后面视图的属性。尝试:
backgroundView.clipsToBounds = YES;
或
tableView.layer.cornerRadius = 5;
tableView.layer.masksToBounds = YES;
您可能需要
#import <QuartzCore/QuartzCore.h>