用CollectionView简化代码,专注于业务和UI
UITableView
作为高级控件被开发者广泛使用,同样的,UICollectionView
由于其NB的布局也被广泛使用。但是后者在使用的时候大多数都属于自定义的比较多,前者则相对普通,list基本上都用。
在业务需求中,常规布局,大多数都是采用UITableView
进行的,但是有痛点:
- 当使在APP内用过一次瀑布流之后,设计师会突然的让你在正常的list中底部追加瀑布流。。虽然是在底部追加,但是要从
UITableView
迁移到UICollectionView
UITableViewDelegate
、UITableViewDataSource
恐怕每处使用都要写繁琐的相同的代码吧~- 很多人也会对其进行高度缓存啊神马的优化策略
- 不知不觉这些代码堆在一起已经将
UIViewController
堆的相当的高
然后呢,我们现在使用一个CollectionView
将这些操作包装一下,达到这样一个流程:
自定义Cell、CellModel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16class LabelCell: UICollectionViewCell {
let info = UILabel()
...
override func sizeThatFits(_ size: CGSize) -> CGSize {
...
return CGSize(width: size.width, height: info.frame.maxY + info.frame.minY)
}
}
extension LabelCell {
class Model: ListItemDefaultProtocol {
var info: String?
func fillModel(view: LabelCell) {
view.info.text = info
}
}
}请求、处理数据格式化为
LabelCell.Model
这样的类处理好的数据交给
CollectionView
1
list.sections = model.format(...)
休息一会,完工了~
然后,来看看Collection
里面都做了什么操作