我想用tabbar实现UICollectionView效果,并且可以像很多社交应用一样切换不同的内容。
您可以点击Home
显示时间线,然后点击Album
在内容区域显示照片。像头像和用户名这样的内容顶部没有变化,切换完成后内容偏移量将保持不变。
我尝试使用包含SupplementaryView的UICollectionView来显示头像和处理tabbar点击事件。在切换不同内容时分配不同的委托,dataSource和布局对象。但是我遇到了很多问题并且崩溃了。
实现这种布局的正确方法是什么以及如何处理切换事件?
答案 0 :(得分:1)
如果我理解正确,您视图的顶部部分不会更改,并保留为带有头像的徽标。如果是这种情况,我不会担心补充意见。对于UITableViews的节标题的使用,类似于截面标题/分隔符的补充视图更多。而是在底部有一个容器视图,它将使用上面的UISegmentedControl保存collectionView,这将触发容器视图中的更改。如果容器要显示具有不同布局的相同数据(即,照片垂直滚动到水平),则分段控件可以触发对collectionViewFlowLayout的更改,但如果数据更改(即时间轴到相册),那么我建议切换到不同从分段控制操作触发的容器视图中的子视图控制器。您可能希望在容器视图控制器中保存当前滚动偏移量,以便在切换回时可以恢复它。另外,具有单独的子视图控制器类将有助于防止容器视图控制器变得过大,并使每个子集合视图控制器保持简单和集中。
答案 1 :(得分:1)
只需分解您的逻辑,没有必要将所有内容保存在一个UICollectionView
中并切换数据源和代理。
答案 2 :(得分:0)
使用CollectionView
https://github.com/jamztang/CSStickyHeaderFlowLayout
没有CollectionView(为演示目的而创建的测试项目)
https://github.com/rishi420/issue-12-interactive-animations-uidynamics
用于分段控制
https://github.com/dzenbot/DZNSegmentedControl
使用collectionView,cellForItemAtIndexPath
中的第一部分是个人资料图片区域。 cellForItemAtIndexPath
中的第二部分是另一个视图,其中包含一个包含所有3个(Home,Album,Profile)可滚动视图的段控件。
您还可以创建一个可拉动视图,该视图在用户向上滚动时保持固定在屏幕底部或占用更多空间。