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

        

  • 相关阅读:
    Django基础——Form&Ajax篇
    redis--悲观锁、乐观锁
    redis--事务
    redis--三种特殊数据类型---的简介、用法
    redis--zet(有序集合)---常用命令、场景
    redis--hash(哈希)---常用命令、场景
    redis--set(无序集合)--的常用命令,应用
    redis--(队列)list--常用命令、小结
    redis--string(字符串) --常用命令、应用场景
    redis基本知识
  • 原文地址:https://www.cnblogs.com/shengzaiwen/p/6591416.html
Copyright © 2011-2022 走看看