zoukankan      html  css  js  c++  java
  • UITableViewCell 动态高度的调整

    需求: 可变的表格高度。动态的加载的数据,同时支持reloadData.

    第一个想法:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 调用

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    这样的话就会造成cellForRowAtIndexPath用两遍,性能先不说会不会出现什么BUG。


    网上找资料: 来自高勇  http://gaoyong.diandian.com/post/2012-08-14/40036292960  

    操作方法:

    需要在因UITableView 的datasource变化后,导致某一个确定的cell需要被
    reload (reloadRowsAtIndexPaths). reload 后需要在该cell中添加一些竖型排列子视图 (addsubview)并且让该subview在可视区域里面。

    在 reload部分。cellForRowAtIndexPath部分。(reload的时候会自动调用cellForRowAtIndexPath)增加 了部分UIScrollView的scroll相关的代码。(UITableView继承自UIScrollView)。发现 cellForRowAtIndexPath被循环调用。

    但是怀疑作者 在调用UITableViewCell *cell=[self tableView: tableView cellForRowAtIndexPath: indexPath];  时可能错误的写成 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];造成了递归。

    第二个方法:用自适应的label 让cell的高度跟着适应。

     CGSize constraint = 预先设置的宽高;

      CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

    然后在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 返回这个高度。当然局限性也很强就是必须是cell适应label的高度,要是有些图片了之类的就废了~~

    第三种方法:我擦他了~ 还没想出来~

     
  • 相关阅读:
    jenkins:用jenkins通过ssh部署jar包到远程linux机器(jdk 15 / jenkins 2.257)
    linux(centos8):安装java jdk 15 (java 15)
    38. 外观数列 迭代
    58. 最后一个单词的长度
    kmp字符串匹配
    单词规律
    1502. 判断能否形成等差数列
    1496. 判断路径是否相交
    1475. 商品折扣后的最终价格
    一维数组的动态和
  • 原文地址:https://www.cnblogs.com/superhappy/p/2759439.html
Copyright © 2011-2022 走看看