Cell的Xib方式自适应高度

回想一下,遇到过的tableViewCell高度计算的有多少种?

(个人认为)最简单粗暴的是,使用MVVM模式,

  • 在对应的ViewModel中添加你需要的高度属性.
  • 在请求完成网络数据之后,在ViewModel中计算对应控件所需要的高度内容.
  • 直接使用ViewModel中的数据对Cell进行高度赋值.

这种方式通过纯代码操作.可操作性强.缺点是, 耗时,代码看起来臃肿.


用XIB的方式动态计算Cell高度.

在探究FDTemplateLayoutCell的时候自己也简单写了个Demo : Demo.

最开始的时候以为FDTemplateLayoutCell中有特别的计算方式,后来发现其实是没有的. 预先通过Xib的自动布局设置好对应的高度属性.


1.准备数据源

ps : 图片资源自己准备就好,放在Assets.xcassets


1638260-7bbb05d96840f276.png
数据源

2.获取数据源&创建TableView

1638260-dfd6dd3c276dbf34.png
初始化数据源&创建TableView

3.设置模型

1638260-ee90910e52320756.png
模型

4.自定义Cell.Xib

1638260-7877664dc6935527.png
cell.m
1638260-abec154bf9cdde9d.png
Xib

5.注意点

1638260-89ee6552296bf6f7.png
注意点一
1638260-517448ac2e2211a0.png
注意点二

总结 :

主要高度控制在Xib的自动布局中.

  • imageView中,设置了一个placeholder尺寸,右边边距>= 你需要的值
  • 最底部Label. 垂直高度内容优先级调低,也就是当其他所有人设置好多有的内容之后,在考虑自己.也就是考虑Cell的最终高度了.
  • 注意Label的lines设置为0.

效果图 :

1638260-afb8eceed4d67e32.png
Demo运行

最后 :

你会发现, 实际并没有进行任何的cell的高度计算,也没用其他第三方框架,同样实现了高度自适应的效果.

  • 是不是瞬间觉得MVVM的方式,是有需要写多少的代码,是有多麻烦.
  • 是不是瞬间觉得Xib的动态高度计算是有多方便.

Xib的动态高度计算 : 其实也有个弊端就是,后续迭代修改的时候,一堆的Constraints,改起来是多不顺心.



那为什么还要使用 FDTemplateLayoutCell ?

回到前面所说的,最开始的时候以为FDTemplateLayoutCell中有特别的计算方式,后来发现其实是没有的. 预先通过Xib的自动布局设置好对应的高度属性.

FDTemplateLayoutCell 主要做的事情是,性能方面的优化.

优化UITableViewCell高度计算的那些事 里有指出为什么使用
"究竟有没有既能省去算高烦恼,又能保证顺畅的滑动,还能支持 iOS6+ 的一站式解决方案呢?"

猜你喜欢

转载自blog.csdn.net/weixin_34194551/article/details/86846057