美文网首页
关于给tableView cell加圆角 或者组头加圆角

关于给tableView cell加圆角 或者组头加圆角

作者: pentakill | 来源:发表于2019-03-28 16:33 被阅读0次

    现在的UI设计越来越个性化,原始的tableView样式在他们眼里觉得不好看,得加上圆角和分区如图

    @“望穿秋水”单行cell加圆角,如果在cell编写的时候就加了圆角还好,可是如果是之前是直角形状,要改成圆角那就麻烦很多了,所以重点来了:

    只需要重写tableview的代理方法

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

        if([cellrespondsToSelector:@selector(tintColor)]) {

            CGFloatcornerRadius =10.f;

           cell.backgroundColor = UIColor.clearColor;

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

           CGMutablePathRef pathRef = CGPathCreateMutable();

            CGRectbounds =CGRectInset(cell.bounds,0,0);

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

    //如果既是第一行也是最后一行,加全部圆角

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

            }elseif(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));

            }elseif(indexPath.row== [tableViewnumberOfRowsInSection: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{

                CGPathAddRect(pathRef,nil, bounds);

            }

            layer.path= pathRef;

            CFRelease(pathRef);

            //颜色修改

            layer.fillColor=WhiteColor.CGColor;

            layer.strokeColor=WhiteColor.CGColor;

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

            [testView.layerinsertSublayer:layeratIndex:0];

            testView.backgroundColor = UIColor.clearColor;

            cell.backgroundView= testView;

        }

    }

    即可。

    但是如果是还有组头呢,这个怎么办呢,不要着急,在tableView的代理方法里面一样有这个分区头的方法

    - (void)tableView:(UITableView*)tableView willDisplayHeaderView:(nonnullUIView*)view forSection:(NSInteger)section{

    }

    以此类推和cell执行一样的方法就可以实现。如图深圳新东方科技公司就是分区头

    第一次在简书上分享,写的不好,还望见谅。

    相关文章

      网友评论

          本文标题:关于给tableView cell加圆角 或者组头加圆角

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