UITableViewCell的展开与收缩功能实现分析

这篇博客介绍了如何在iOS中实现UITableViewCell的展开和收缩功能,通过更改约束优先级来实现不同的布局。关键在于自定义Cell类中的约束设置和闭包回调,以及在ViewController的`tableView(_:cellForRowAtIndexPath:)`方法中判断并设置Cell的展开状态。
摘要由CSDN通过智能技术生成
前几天看到一份实现了TableViewCell收缩展开的源码,感觉实现方式很独特,对以后我做其他效果也算是提供了一种新思路,特此记录下来。

他通过代码内更改约束的优先级来实现不同布局。



图中可以看到,他在Cell的ContentView里面放了一个ContainerView,并令Label的边界与ContainerView的边界重合,而且我们需要知道的是,Label的VerticalConstrain默认是800,也就是说,如果竖直方向上其它Constrain的优先级都不足800的话,Label则会按内容的大小排布。

“显示全部”这个Button放在ContainerView的下面并向上设置好了距ContainerView和向下距ContentView的距离,用于自动推测Cell高度(因为设置了 estimatedRowHeight 和 rowHeight = UITableViewAutomaticDimension)。

他从storyboard拖了两条线到自定义Cell类中,分别是ContainerViewHeightLayoutConstrain和containerViewBottomLayoutConstrain,一个是约束ContainerView的高度为86,一个是约束ContainerView的底边与ContentView重合,但是默认状态下第二条约束优先级低不生效,ContainerView默认底边位于“显示全部”Button的上方。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值