一.搭建界面

1.界面分析
分析界面的层次结构,分析界面应该用什么控件来搭建

2.界面层次结构
分析之后,我们可以把这个界面分为四个模块(topView middleView commentView bottomView)
这种复杂的界面,我们一般称为:不等高cell

3.界面搭建方式
分析发现,界面大部分是不能确定的(文字高度,有没有图片,评论)
所以我们采用纯代码的方法来搭建界面
但是复杂的界面我们划分过之后,有些小模块里面的内容是固定的
这些固定的小模块我们可以采用xib来搭建

4.有些模块不确定是否显示,搭建的时候怎么处理?
在创建cell的时候,我们先把所有的模块添加进去,不需要的时候隐藏就行了

5.创建cell的代码写在哪里?
首先要自定义cell ,一般创建cell我们要做缓存处理,所以cell创建一般都要注册
通过类注册的本质是调用cell的initWithStyle:方法
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier
我们只需要在这个方法里面写代码就可以了
注意:调用这个方法,一定要调用super 方法

6.怎么确定通过类注册cell一定会调用initWithStyle:方法
在自定义cell的类里面重写这个方法,通过打印信息可以确定

7.为什么不在initWithFrame方法中创建cell?
initWithFrame方法只有当控件通过init方法或initWithFrame方法创建才会调用
而我们创建cell是通过initWithStyle:方法创建的

8.cell这么多模块,怎么搭建?
一个模块一个模块的搭建
先搭建topView模块(搭建界面,加载数据,处理数据),处理完业务逻辑之后再接着搭建下一个模块

二.topView界面搭建
1.搭建方法 xib搭建

2.用什么控件搭建
头像用ImageView, 昵称和时间还有正文分别用label

3.请求数据
查看接口文档,发送网络请求,解析数据,展示数据
展示数据,要设置cell的frame

4.cell的frame怎么确定?
xib中不能确定cell的frame,所以在xib中cell多大都没关系,但是一定要对子控件进行约束
xib中子控件的大小就是显示出来的实际大小
所以:我们加载xib的时候,要重新设置cell的frame

5.cell的高度怎么确定?
cell的高度需要我们手动来计算

6.cell的高度在哪里计算?
6.1不能再cellForRowAtIndexPath方法中计算(晚了)
6.2也不能在heightForRowAtIndexPath计算cell高度,这个方法调用频率非常高

7.计算cell的高度有哪些要求?
7.1一定要在heightForRowAtIndexPath调用之前,计算cell高度
7.2只需要计算一次

8.在哪里计算cell高度?
当请求数据成功的时候,就计算好cell高度
把cell的高度保存到一个数组中,然后在heightForRowAtIndexPath方法里面返回数组中对应的cell的高度
这种方法的缺点:控制器中代码太多,控制器更加重量级

9.也可以在模型里面计算cell的高度
一般来说,我们要做缓存处理,一般是对模型进行缓存
如果把计算代码放到模型里面,那么缓存数据就比较大,性能不好
还有一种方法:可以利用MVVM框架来计算cell高度

不等高cell的tableView界面搭建的更多相关文章

  1. 自定义不等高cell—storyBoard或xib自定义不等高cell

    1.iOS8之后利用storyBoard或者xib自定义不等高cell: 对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持) 添加子控件和contentView(cell的content ...

  2. iOS开发——UI进阶篇(三)自定义不等高cell,如何拿到cell的行高,自动计算cell高度,(有配图,无配图)微博案例

    一.纯代码自定义不等高cell 废话不多说,直接来看下面这个例子先来看下微博的最终效果 首先创建一个继承UITableViewController的控制器@interface ViewControll ...

  3. 不等高cell搭建(二)

      一.commentView模块搭建 commentView样式分为两种     1.xib搭建界面   1.1 因为评论的样式大体上一样,我们可以用同一个xib来处理   1.2 最热评论   用 ...

  4. 不等高cell的搭建(一)

    一.界面搭建   1.确定开发模式      如果界面是固定的,可以用xib      界面的一些内容不固定,就用纯代码      cell用什么方式去开发(我们采用纯代码和xib结合的方式)   2 ...

  5. 纯代码自定义不等高cell

    数据模型.plist解析这里就不过多赘述. 错误思路之一: 通过在heightForRowAtIndexPath:方法中调用cellForRowAtIndexPath:拿到cell,再拿到cell的子 ...

  6. iOS之处理不等高TableViewCell的几种方法

    课题一:如何计算Cell高度 方案一:直接法(面向对象) 直接法,就是把数据布局到Cell上,然后拿到Cell最底部控件的MaxY值. 第一步:创建Cell并正确设置约束,使文字区域高度能够根据文字内 ...

  7. 处理不等高TableViewCell

    课题一:如何计算Cell高度 方案一:直接法(面向对象) 想知道妹纸爱你有多深?直接去问妹纸本人吧! 嗯!Cell也是一样的,想知道cell到底有多高?直接问Cell本人就好了.直接法,就是把数据布局 ...

  8. 非等高cell实战(01)-- 实现微博页面

    非等高cell实战(01)-- 实现微博页面 学习过UITableView.AutoLayout以及MVC的相关知识,接下来通过一个微博页面实战来整合一下. 首先看一下效果图: 需求分析 此页面为非等 ...

  9. 非等高cell实战--实现微博页面

    代码地址如下:http://www.demodashi.com/demo/11639.html 前言 学习过UITableView.AutoLayout以及MVC的相关知识,接下来通过一个微博页面实战 ...

随机推荐

  1. python 动态加载module、class、function

    python作为一种动态解释型语言,在实现各种框架方面具有很大的灵活性. 最近在研究python web框架,发现各种框架中需要显示的定义各种路由和Handler的映射,如果想要实现并维护复杂的web ...

  2. LR中的编码问题

    [转载]LoadRunner字符集与检查点的探讨 很多人在loadrunner测试脚本中加入中文检查点的时候会出现检查失败的情况,究竟是为什么呢?其实是被测试系统与loadrunner字符集之间的转换 ...

  3. 大数据情况下linux的配置

    一:配置的大纲 主要的配置有几个方面: 主机名 IP 网络映射 增加新用户 给新用户root的权限,方便实验 关闭防火墙 安全子系统需要关闭 二:主机名的配置 命令:vi /etc/sysconfig ...

  4. java中的trim()

    trim():去掉字符串首尾的空格.但该方法并不仅仅是去除空格,它能够去除从编码'\u0000′ 至 '\u0020′ 的所有字符. 回车换行也在这20个字符 例1: public static vo ...

  5. RelativeLayout不能调用measure去直接测量子元素

    RelativeLayout在实现onMeasure方法时并没有像LinearLayout一样去重写如下代码: @Override protected void onMeasure(int width ...

  6. .Net程序员安卓学习之路1:登陆界面

    任何编程学习起步均是HelloWorld,作为稍有>net编程经验的我们来说就跳过这步吧,咱们且从简单登录界面开始.先看看效果: 一.准备知识: 1. 安卓环境:安装好JDK,直接去官网下载AD ...

  7. How to control printer orientation(Landscape / Portrait) for an AX report in X++

    You should try this: 1. Set property Orientation on your report design to Auto 2. In your fetch meth ...

  8. 【Algorithm】堆排,C++实现

    对一个数组中的元素按照顺序构建二叉树,就形成了一个(二叉)堆.(二叉树是虚拟的,并不是真的建立二叉树) 表示堆的数组A有两个重要属性:A.heapSize,表示堆里面有多少元素,数组里有多少元素在堆里 ...

  9. magento去掉小数点后面的0

     <?php echo $_product->getPrice()?> PHP number_format() 函数  <?php echo number_format($_p ...

  10. Car---hdu5935(简单题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5935 题意:有一辆车在马路上行驶,速度不变或增加,然后警察在某整数点时刻记录下了这辆车所经过的位置,共 ...