cell的系统分割线消失了...

新公司上班第6天了,记录下开发中遇到的几个问题,其中有个问题现在还没弄清楚其中的原理。懂的大佬可以解释下。话不多说,马上聊下这几个问题。

1.当我继承UITableVIewCell 时 用Masory 约束 子控件出现了的一个诡异问题。(系统Cell的分割线都不显示。)
因为项目前期(项目还在由外包承担,我也不知道为什么公司这么着急招人)。。。自己看着设计开始写写布局。随便练练手。
我的cell 是用纯代码懒加载写的。

-(void)layoutSubviews {
    
    [self.infoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.contentView).offset(15);
        make.top.equalTo(self.contentView).offset(15);
        make.width.mas_equalTo(60);
        make.height.mas_equalTo(60);
    }];
}

之后将约束写在了这个方法里面。最后运行发现系统的分割线不见了(不是不见了,当行数多的时候还会出来1,2条,复用情况)。惊呆了。为什么? 后来开始尝试解决到底是什么引起的。
1.三个方向开始研究是什么导致的。
是不是tableView复用方法的问题。因为我tableView 一般都是register的,很少使用静态变量方法。用静态变量尝试更改,发现无果。问题还是依旧。 因为我觉得cell分割线不见了 是不是cell的style发生了变异。 所以尝试这个。。。

2.是不是布局的子视图较多,约束出现了问题??
因为在该cell中,进行了从上至下的4个视图的布局。最后并没有使用tableView的自适应高度。而是将rowHight 写死,是不是因为控件多的元素导致的。高度不够了? 由此将控件只写一个。然后并未能解决问题。依旧是刚才刚才的情况。

3.是不是不能在layoutSubView里做布局?
这个我之前尝试过,我记得可以在layoutSubView中布局,去动态改变cell的样式或者高度 也并没出现消失分割线的情况。这次难道会是这里的问题导致的? 接着尝试 不在这里做约束布局。在init方法理直接做。

-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier  {
    if (self =[super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        self.selectionStyle = UITableViewCellSelectionStyleNone;
        [self.contentView addSubview:self.infoImageView];
        [self.contentView addSubview:self.titleLabel];
        [self.contentView addSubview:self.dateLabel];
        [self.contentView addSubview:self.clickLabel];
        
        // 添加子控件的约束
        [self makeSubViewsConstraints];
    }
    return  self;
}
-(void)makeSubViewsConstraints {
    
        [self.infoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.equalTo(self.contentView).offset(15);
            make.top.equalTo(self.contentView).offset(15);
            make.width.mas_equalTo(60);
            make.height.mas_equalTo(60);
        }];
        [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.equalTo(self.infoImageView.mas_right).offset(7);
            make.top.equalTo(self.infoImageView);
            make.height.mas_equalTo(22);
            make.right.equalTo(self.contentView).offset(-15);
        }];
        [self.dateLabel mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.equalTo(self.titleLabel);
            make.bottom.equalTo(self.infoImageView);
            make.height.mas_equalTo(12);
            make.width.mas_equalTo(120);
        }];
        [self.clickLabel mas_makeConstraints:^(MASConstraintMaker *make) {
            make.height.equalTo(self.dateLabel);
            make.width.equalTo(self.dateLabel);
            make.right.equalTo(self.titleLabel);
            make.bottom.equalTo(self.dateLabel);
        }];
}

发现这样下来 ,分割线就不会再消失了,都是正常显示。
按理说layoutSubView这个方法 是在tableView滚动的时候就持续执行的。这里去不断重复布局约束,应该没啥问题呀。为什么出现分割线消失的情况,有知道的大佬可以指点下。。小弟感激。

2.后台返回的URL 地址中出现了空格 导致前端加载 不出来图片。

3.打印 中文的json字符串

你可能感兴趣的:(cell的系统分割线消失了...)