自定义等高和非等高cell

等高

  • storyboard

  • 拖一个tableView,设置固定的行高

  • 在cell上设置子控件

  • 设置cell的标识

  • 控制器取cell设置数据

  • xib

  • 创建cell的xib

  • 布局子控件

  • 控制器设置行高,取cell设置数据

  • 代码

  • 代码自定义cell的子控件

  • 控制器设置行高,取cell设置数据

非等高

  • xib

  • 新建xib文件设置子控件,基本和等高一样

  • 控制器设置数据,cell重写setter方法,然后强制布局为数据模型计算出cell应该有的高度

  • 在控制器中先返回cell预期的高度,这样就可以使获得cell的数据源方法在获得高度的方法之前调用

  • 注意点就是由于强制布局导致label的计算出来的高度和实际显示的高度有时候不一致,可以在cell的awakeFromNib中设置label的preferredMaxLayoutWidth属性设置文字布局的范围,由于约束所以label的间距依然是距离父控件的距离左右是10,有时候右边会空出一点,是因为下一个文字显示不下,换行到下一行去显示

  • storyboard

  • 和xib的基本一致,只是将子控件的布局从xib转移到storyboard中

  • 在storyboard中如果设置label距离父控件的左右距离各为10,那么运行出来会有约束警告,解决办法是只给label设置上、左间距确定位置即可,在cell的awakeFromNib中设置label的preferredMaxLayoutWidth属性设置文字布局的范围,这个时候的label的范围就是文字的范围,实现了包裹的效果

  • 代码

  • 增加frame模型,在该模型中计算frame

  • 自定义cell demo code : demo 密码 : jcsb

  • tableView的运用 : QQ聊天布局 密码 : i612

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容