美文网首页iOS开发坑点iOS 常见问题汇总
iOS自定义UITableViewCell分割线,复用消失的问题

iOS自定义UITableViewCell分割线,复用消失的问题

作者: 何以_aaa | 来源:发表于2017-03-20 16:28 被阅读1400次

    1.自定义分割线问题:

    自定义的UITableCell中自定义的分割线(UIView),在滑动时,cell复用的时候,分割线会消失。

    原因:

    - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
        
        if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
            //在这里添加的view作为分割线
        }
        return self;
    }
    

    分割线自定义在每个cell上,当cell复用的时候,只会读取你的数据模型的数据,但是分割线不会重新划线。

    解决办法:

    删除用view划线,重写cell的drawRect方法,在这里划线。

    - (void)drawRect:(CGRect)rect {
        
        CGContextRef context = UIGraphicsGetCurrentContext();
        
        CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor);
        
        CGContextFillRect(context, rect);
        
        //上分割线,
        //CGContextSetStrokeColorWithColor(context, COLORWHITE.CGColor);
        //CGContextStrokeRect(context, CGRectMake(5, -1, rect.size.width - 10, 1));
        
        //下分割线
        CGContextSetStrokeColorWithColor(context,SeparateLineColor.CGColor);
        CGContextStrokeRect(context,CGRectMake(10, rect.size.height-1, SCREEN_WIDTH-20,1));
    }
    

    2.使用系统分割线:

    设置分割线宽度,颜色:

        // 和tableView等宽,也可自定义 UIEdgeInsetsMake(0, 0, 0, 0)
        self.tableView.separatorInset = UIEdgeInsetsZero;
        self.tableView.separatorColor = [UIColor redColor];
    

    相关文章

      网友评论

        本文标题:iOS自定义UITableViewCell分割线,复用消失的问题

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