OverView

如题,前两天面试的时候被问到这个问题。说实话,这两个常用控件我是都用过,但要我立马说出其区别,还真没系统性总结过。

甚至由于太长时间不写相关代码,连UICollectionView的自定义layout部分我都没有提,感觉这是UICollectionView自由度高的核心体现之一了。

但我忘了,简直对不起之前花那么长时间coding的代码。

Compare

总体的对比,可以参见下表,不逐一分述了,很基础的内容。

特性 UITableView UICollectionView
数据展示方式 线性(单列)展示,适合垂直列表 灵活,可以支持网格、横向或纵向布局
布局 默认垂直单列布局,可以自定义行高和单元格样式 支持多种布局(网格布局、线性布局、瀑布流布局等),可以自定义每个单元格的大小和排列方式
使用场景 简单的单列数据展示,如联系人列表、消息列表 复杂布局的展示,如图像库、商品展示、动态网格布局等
性能和复用机制 使用 UITableViewCell 的重用机制,适合长列表展示 使用 UICollectionViewCell 的重用机制,支持复杂布局和交互,性能优秀
自定义和扩展性 主要自定义 UITableViewCell,支持编辑、插入、删除等功能 更灵活的自定义选项,包括布局、单元格交互方式、头尾视图等
滚动方向 主要支持垂直滚动,横向滚动支持有限 支持横向和纵向滚动,可以自由选择滚动方向
区分单元格和头尾视图 支持整个表格的头部和尾部视图,也支持分区头尾视图 支持每个分区的头尾视图,可以自定义更多的补充视图
事件处理 通过 UITableViewDelegate 处理选择、编辑、删除等事件 通过 UICollectionViewDelegate 处理更多交互事件,包括拖动、滑动、选择、移动等

Others

为了补债顺便复习,给自己开个写UICollectionView使用轮子的坑吧。

近期更新…