OverView
如题,前两天面试的时候被问到这个问题。说实话,这两个常用控件我是都用过,但要我立马说出其区别,还真没系统性总结过。
甚至由于太长时间不写相关代码,连UICollectionView的自定义layout部分我都没有提,感觉这是UICollectionView自由度高的核心体现之一了。
但我忘了,简直对不起之前花那么长时间coding的代码。
Compare
总体的对比,可以参见下表,不逐一分述了,很基础的内容。
特性 | UITableView | UICollectionView |
---|---|---|
数据展示方式 | 线性(单列)展示,适合垂直列表 | 灵活,可以支持网格、横向或纵向布局 |
布局 | 默认垂直单列布局,可以自定义行高和单元格样式 | 支持多种布局(网格布局、线性布局、瀑布流布局等),可以自定义每个单元格的大小和排列方式 |
使用场景 | 简单的单列数据展示,如联系人列表、消息列表 | 复杂布局的展示,如图像库、商品展示、动态网格布局等 |
性能和复用机制 | 使用 UITableViewCell 的重用机制,适合长列表展示 |
使用 UICollectionViewCell 的重用机制,支持复杂布局和交互,性能优秀 |
自定义和扩展性 | 主要自定义 UITableViewCell ,支持编辑、插入、删除等功能 |
更灵活的自定义选项,包括布局、单元格交互方式、头尾视图等 |
滚动方向 | 主要支持垂直滚动,横向滚动支持有限 | 支持横向和纵向滚动,可以自由选择滚动方向 |
区分单元格和头尾视图 | 支持整个表格的头部和尾部视图,也支持分区头尾视图 | 支持每个分区的头尾视图,可以自定义更多的补充视图 |
事件处理 | 通过 UITableViewDelegate 处理选择、编辑、删除等事件 |
通过 UICollectionViewDelegate 处理更多交互事件,包括拖动、滑动、选择、移动等 |
Others
为了补债顺便复习,给自己开个写UICollectionView使用轮子的坑吧。
...