美文网首页
UITableView Cell动态变更cell高度&单

UITableView Cell动态变更cell高度&单

作者: 上帝是个女孩丶 | 来源:发表于2019-03-04 21:34 被阅读7次

    使用系统的UITableView加载cell的时候经常会出现cell一上下滑动就错乱的情况。这个时候:

    1. 不复用,每个都重新创建。(内存消耗增加,页面卡顿。且部分场景不适用)
    2. 复用,但是需要解决视图错乱问题,通常都是reset数据源,重新对每一个可能错乱的地方重新赋值。

    问题来了:

    1. 正常情况下cell展示出来后,想要动态变更高度只能再去刷新TableView达到效果。
    2. cell内部元素过多,label、text太多计算高度太费劲,UE太毒辣,要求一会展示一行,一会展示多行,一会全部展示。总之,计算起来头都大了。
    3. 本来好不容易计算好的页面,一滑动错乱了……cell复用有问题。

    答案来了:

    1. 系统提供了TableView自动刷新的方法,无需手动获取TableView并刷新。
    [tableView beginUpdates];
    业务代码,cell变高在这里做
    [tableView endUpdates];
    
    1. 这种情况使用系统的约束是最方便的,约束绑定到cell的底部,则系统会自动计算高度。无需再重新赋值。label可以通过优先级控制,hugging和compression了解一下。
      IOS8以后的UITableView不需要再设置row高度,但是需要设置一个参数,给cell一个默认高度:
      self.alertTableView.estimatedRowHeight = 100.0f;
    2. 单元格的复用,其实最好的解决办法就是针对每一个cell都做数据源绑定,必须绑定到每一个数据。如果出现model中不存在的数据,那么需要另外在内存中增加Dictionary来根据row一一对应cell的数据,在每次重用的时候根据row去获取cell数据并绑定。
    BOOL isSelected = [[self.selectDic objectForKey:[NSString stringWithFormat:@"%ld",indexPath.row]] boolValue];
    cell.isSelected = isSelected;
    [self setCellContent:cell];
    

    相关文章

      网友评论

          本文标题:UITableView Cell动态变更cell高度&单

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