美文网首页
day10-UITableView-自定不等高的cell-sto

day10-UITableView-自定不等高的cell-sto

作者: js_huh | 来源:发表于2020-06-07 20:40 被阅读0次

自定不等高的cell-storyboard版 01-无配图


是什么?


思路:
  • storyboard里面控件的设置
    • 设置ViewController继承自UITableViewController
    • storyboard中控件创建UITableViewController控件,且关联到ViewController
    • 创建自定义cell类继承自UITableViewCell.
    • storyboard中控件cell,关联自定义cell类
    • 控件cell里创建子控件(头像,名称,vip,正文),设置位置,大小,约束.
  • plist文件里面获取数据
  • 初始化cell + 设置cell的位置和大小(storyboard里设置好了)
  • 给cell设置数据.
  • 设置cell的高度
    • 告诉tableViewcell的高度是自动得
    • 预估cell的高度
  • 多个cell之间存在"循环引用",该怎么设置"配图"?
  • 因cell的高度,在storyboard的里面固定了.
    那么当不显示"配图"的情况下,cell的高度就显得太高了,不协调,该怎么办呢?

  • cell存在循环引用,所以有配图和无配图的情况,都需要写
    如,只写有配图的情况下,给配图赋值.无配图情况下不写.则会产生.
    ....
    if (statu.picture) {//有值时
        self.pictureImg.image = [UIImage imageNamed:statu.picture];
    }
    ....
    
    • 开始某个cell,本身并没有配图.(如:示例中第一个cell)
    • 当此cell移出屏幕,再次拉回屏幕时,就突然多了配图.


    • 所以,有配图和无配图的情况都需要写.
      ....
      //配图
      if (statu.picture) {//有值时
          self.pictureImg.hidden = NO;
          self.pictureImg.image = [UIImage imageNamed:statu.picture];
        }else{//无值时
          self.pictureImg.hidden = YES;
        }
      
      • 以上代码中, "配图"虽然不会因为"cell的循环引用",而导致一会有"配图",一会无配图. 但是,没有"配图"的cell,并没因为"隐藏",而改变了cell的高度. 查看-原因
      • 解决方法,"拖拽约束",对其进行设置.从而达到显示/隐藏配图


        @interface StatusCell()
        @property (weak, nonatomic) IBOutlet NSLayoutConstraint *pictureHeight; // 配图高度的约束
        @property (weak, nonatomic) IBOutlet NSLayoutConstraint *pictureBottom; // 配图距离底部的约束
        
          //配图
          if (statu.picture) {//有值时
          self.pictureImg.hidden = NO;
          self.pictureImg.image = [UIImage imageNamed:statu.picture];
          //通过给约束的常量赋值,修改pictureImg的宽和高.
          self.pictureHeight.constant = 100;
          self.pictureBottom.constant = 10;
          self.pictureImg.image = [UIImage imageNamed:statu.picture];  
          }else{//无值时
          self.pictureImg.hidden = YES;
          //通过给约束的常量赋值,修改pictureImg的宽和高,进而连锁反应,达到修改了cell的高度
          self.pictureHeight.constant = 0;
          self.pictureBottom.constant = 0;
          }
        
  • 因"配图"有时有,有时又没有. 所以cell的高度既等于40,又等于100.这样设置出来的约束,编译器会报⚠️.
    解决方法

相关文章

网友评论

      本文标题:day10-UITableView-自定不等高的cell-sto

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