Cell的Xib方式自适应高度
2019-01-25 本文已影响15人
li_礼光
回想一下,遇到过的tableViewCell高度计算的有多少种?
(个人认为)最简单粗暴的是,使用MVVM模式,
- 在对应的ViewModel中添加你需要的高度属性.
- 在请求完成网络数据之后,在ViewModel中计算对应控件所需要的高度内容.
- 直接使用ViewModel中的数据对Cell进行高度赋值.
这种方式通过纯代码操作.可操作性强.缺点是, 耗时,代码看起来臃肿.
用XIB的方式动态计算Cell高度.
在探究FDTemplateLayoutCell的时候自己也简单写了个Demo : Demo.
最开始的时候以为FDTemplateLayoutCell中有特别的计算方式,后来发现其实是没有的. 预先通过Xib的自动布局设置好对应的高度属性.
1.准备数据源
ps : 图片资源自己准备就好,放在Assets.xcassets
数据源
2.获取数据源&创建TableView
初始化数据源&创建TableView3.设置模型
模型4.自定义Cell.Xib
cell.m Xib5.注意点
注意点一 注意点二总结 :
主要高度控制在Xib的自动布局中.
- imageView中,设置了一个placeholder尺寸,右边边距>= 你需要的值
- 最底部Label. 垂直高度内容优先级调低,也就是当其他所有人设置好多有的内容之后,在考虑自己.也就是考虑Cell的最终高度了.
- 注意Label的lines设置为0.
效果图 :
Demo运行最后 :
你会发现, 实际并没有进行任何的cell的高度计算,也没用其他第三方框架,同样实现了高度自适应的效果.
- 是不是瞬间觉得MVVM的方式,是有需要写多少的代码,是有多麻烦.
- 是不是瞬间觉得Xib的动态高度计算是有多方便.
Xib的动态高度计算 : 其实也有个弊端就是,后续迭代修改的时候,一堆的Constraints,改起来是多不顺心.
那为什么还要使用 FDTemplateLayoutCell ?
回到前面所说的,最开始的时候以为FDTemplateLayoutCell中有特别的计算方式,后来发现其实是没有的. 预先通过Xib的自动布局设置好对应的高度属性.
FDTemplateLayoutCell 主要做的事情是,性能方面的优化.
优化UITableViewCell高度计算的那些事 里有指出为什么使用
"究竟有没有既能省去算高烦恼,又能保证顺畅的滑动,还能支持 iOS6+ 的一站式解决方案呢?"