美文网首页
tableView中的section圆角

tableView中的section圆角

作者: Kloar | 来源:发表于2016-12-13 15:37 被阅读81次

    // 重新绘制cell边框

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

    if ([cell respondsToSelector:@selector(tintColor)]) {

    CGFloat cornerRadius = 10.f;

    cell.backgroundColor = UIColor.clearColor;

    CAShapeLayer *layer = [[CAShapeLayer alloc] init];

    CGMutablePathRef pathRef = CGPathCreateMutable();

    CGRect bounds = CGRectInset(cell.bounds, 10, 0);

    if (indexPath.row == 0 && indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {

    CGPathAddRoundedRect(pathRef, nil, bounds, cornerRadius, cornerRadius);

    } else if (indexPath.row == 0) {

    CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));

    CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds), CGRectGetMidX(bounds), CGRectGetMinY(bounds), cornerRadius);

    CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);

    CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds));

    CGPathAddLineToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));

    } else if (indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {

    CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds));

    CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds), CGRectGetMidX(bounds), CGRectGetMaxY(bounds), cornerRadius);

    CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);

    CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds));

    } else {

    CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds));

    CGPathAddLineToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));

    CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds));

    CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds));

    }

    layer.path = pathRef;

    CFRelease(pathRef);

    //颜色修改

    layer.fillColor = [UIColor whiteColor].CGColor;

    layer.strokeColor=[UIColor colorWithHexString:@"#939393"].CGColor;

    UIView *testView = [[UIView alloc] initWithFrame:bounds];

    [testView.layer insertSublayer:layer atIndex:0];

    testView.backgroundColor = UIColor.clearColor;

    cell.backgroundView = testView;

    cell.selectionStyle=UITableViewCellSelectionStyleNone;

    }

    [self tableView:tableView willDisplayCell:cell readDataIndexPath:indexPath];

    }

    网上有很多一样的,但有一个缺陷是cell与cell之间的线画的不一样。导致美观性变差,已修改。

    相关文章

      网友评论

          本文标题:tableView中的section圆角

          本文链接:https://www.haomeiwen.com/subject/ikhbmttx.html