首先上图
下面来分析一下tableView的层级结构
tableView的组成:
1.整个tableView有且仅有一个头部和尾部就是tableViewHeadView和tableViewFooterView
2.tableView 可以有多个section,一个section有且仅有一个sectionHead 和sectionFooter 但是可以有多cell
复制代码
在很多情况下有很多人会忘记tableView的section和head,比如在写一些多级列表的时候,其中有一种解决方法就是处理数据源,来根据模型判断应该展示的cell的样式,但是这种要处理数据源,而且结构相对来说也不够清晰,感觉不够好,下面来举例说明一下
以微信朋友圈为例(微信不一定是按照这种思路实现,没有逆向去了解过。)但是可以用这种思路去解决这种布局的问题
- 首先上面的背景和头像那个可以放在tableViewHeadView
- 接下来就是个人发的动态消息这个可以放在tableViewSectionHead里面
- 就是下面的评论了,可以用tableViewCell来写。
用以上这种方法布局之后感觉思路就比较清晰了
上面还提到了一种思路这边简单介绍一下,就是根据数据模型来判断,大概就是上面的动态消息那块用一个数据模型,再下面的评论用一个数据模型,前期数据请求下来之后将数据整理好之后存放到数据中,再展示的时候更具数据模型来判断用哪个cell加载,但是这种方式仅供参考,不提倡使用这种方式,有点类似于曲线救国的方式,但是如果列表的层级再深一层的话可以考虑用这种方式或者嵌套的方式。
特别说明一下
collectionView没有tableView类似tableViewHeadView和tableViewFooterView的整体头部和尾部,在做其他的样式UI的时候需要注意一些
但是用其他的方法还是可以实现类似collectionViewHeadView 和FooterView就是设置collectionView的UIEdgeInsetsMake值,这样可以实现,但是这样的话有个问题,就是加入刷新组件的时候会发现刷新组件偏移了。