实现复杂UI样式(多控件,不定长文本)的UITableViewCell的思路

时间:2021-04-15 00:23:54

废话不多说,先上效果图。

实现复杂UI样式(多控件,不定长文本)的UITableViewCell的思路

 新建一个UITableViewCell子类。在xib文件中布置好控制添加好约束

实现复杂UI样式(多控件,不定长文本)的UITableViewCell的思路

这里强调一点就是contentLabel位置,没有bottom的约束。这个很重要只有top,left,right的约束,然后给它添加一个高度约束。也就是Content Height 我这里设置成20了,这个数根据你字体大小样式灵活设置。

tableview里面的每个cell的高度都存放在模型里面,像这样

实现复杂UI样式(多控件,不定长文本)的UITableViewCell的思路

所以,tv(tableview)代理直接这样处理就可以了

实现复杂UI样式(多控件,不定长文本)的UITableViewCell的思路

当给cell填充数据的时候,最关键的一点就是,根据content文字长度(算出高度,这点在Comment类中的完成的,计算出来并存放到模型中),改变给contentLabel高度约束值。如下图:

实现复杂UI样式(多控件,不定长文本)的UITableViewCell的思路

连线如下图所示:

实现复杂UI样式(多控件,不定长文本)的UITableViewCell的思路

另外有一点,根据不同的业务需要控制控件的显示与否这点也可以通过控制约束完成,大致就是对于一个控件来说,添加多个约束,设计不同的优先级

for example:

视图A有两个子视图B,C,C需要根据不同的业务数据来决定是否需要显示,这样,给B视图添加一个相对于C的约束,然后在添加一个相对于A的约束,当然是有不同的优先级的,如果C需要显示,则C隐藏属性设置成false,B相对于C的优先级大于A的,这样,如果C不需要显示,则调低A相对于它的约束优先级,然后增加B相对于A的优先级。