zoukankan      html  css  js  c++  java
  • UITableView自定义Cell中,纯代码编程动态获取高度

      在UITableView获取高度的代理方法中,经常需要根据实际的模型重新计算每个Cell的高度。直接的做法是在该代理方法中,直接根据模型来返回行高;另

    [1]-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    一种比较优雅的方式是将高度的获取方法放在一个单独的frame中[2],frame中包含了该Cell显示需要的数据模型。

        但是在IOS8之后,苹果提供了一个更简便的方法。该方法要求使用Auto layout,刚开始查了很多关于动态获取高度的方法,这些文章中都是使用的Interface builder实现。于是将Auto layout和Interface builder两个概念混为一谈,认为只有使用Interface builder技术才能实现动态高度获取。再此,也陈述下Auto layout的概念:主要是指依靠约束来达到对某一元素的定位,最常见的使用了该技术的是Masonry开源库。因此,在自定义Cell中用该库实现约束的,理论上是可以自动获取高度的,具体方法如下代码:

      self.tableView.rowHeight = UITableViewAutomaticDimension;

        self.tableView.estimatedRowHeight = 40.0;

        只需要设置tableview的两个属性rowHeight和estimatedRowHeight。其中rowHeight的属性默认设置为UITableViewAutomaticDimension,改代码可以省略,具体意思查了相关资料也没得到结论;estimatedRowHeight是预估的Cell高度,不必很准确,如果需要比较准确的得到每个Cell的高度,可以使用另一个代理方法[3]。还有一个重点需要提及,UITabeView中的每个Cell的高度代理方法不需要实现。

    [3]-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath

        

  • 相关阅读:
    ALV实时刷新功能的实现
    sap中批量导入Excel表格中的数据
    从se11新建的表维护中,给维护的数据做限制处理,例如,只允许输入vp开头的数据
    abap之ranges使用
    Abap中LOOP循环时使用AT FIRST. 传数过程中出现一串 ******** ------解决办法
    Django项目-创建第一个页面
    Python3创建django项目
    Python3安装Pyyaml
    Appium命令行环境搭建及参数使用
    c# ABP 中开启新的事务
  • 原文地址:https://www.cnblogs.com/shengzaiwen/p/6591416.html
Copyright © 2011-2022 走看看