UITableViewCell分组表的第一个和最后一个单元格的圆角

时间:2011-10-31 14:38:02

标签: iphone uitableview

我制作了自定义uiTableViewCell,并将其用作UITableview,就像屏幕截图一样。 问题是分组表上的第一个和最后一个单元格的圆角。 enter image description here

如何制作拳头和最后一个细胞角落

3 个答案:

答案 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)

诀窍是设置

view.layer.cornerRadius = 10;

this link! 上查看此示例项目。

答案 2 :(得分:0)

尝试设置细胞的背景颜色clearColor:您的桌子似乎有圆角,但您的细胞正在覆盖它。另一种替代解决方案可能是更改表后面视图的属性。尝试:

backgroundView.clipsToBounds = YES;

tableView.layer.cornerRadius = 5;
tableView.layer.masksToBounds = YES;

您可能需要

#import <QuartzCore/QuartzCore.h>