0

我必须制作这个与 Instagram 个人资料具有相同逻辑的控制器

  1. 选项卡和标题
  2. 固定在顶部的选项卡

我正在使用 UICollectionViewCompositionalLayout 和选项卡逻辑的问题。我使用一个收集单元并根据选项卡更改日期。但是偏移和动画的问题。我该如何改变它或者我应该使用其他方式?

在此处输入图像描述

4

1 回答 1

0

我已经成功地使用了(也很头疼:),UICollectionView在单个UIScrollView. 使UIScrollView跨度为整个屏幕高度并使用选项卡菜单添加分页。在滚动视图上方添加您的选项卡菜单/标题内容(因此它在视图层次结构中更高并覆盖您的上半部分UIScrollView。使用每个集合视图的scrollViewDidScroll方法来获取scrollView.contentOffset.y值并相应地调整菜单的锚点。如果contentOffset.y值得到比你的菜单高,停止调整它以“锁定”顶部的选项卡栏部分。诀窍(和痛苦)是使每个集合视图中的第一个单元格为空填充。这个填充单元应该与您的选项卡大小相同菜单/标题内容,因此集合视图看起来好像它在正确的位置,而不是被您的选项卡菜单/标题内容隐藏。

的示例实现scrollViewDidScroll。是tabMenuHeaderContentTopAnchor一个NSContstraint. 150 恰好是我的标题内容的高度。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let constant = -scrollView.contentOffset.y
    if constant < -150 { // This will lock your tab menu in place
        tabMenuHeaderContentTopAnchor?.constant = -150
    } else { // Otherwise, adjust the anchor to move with the collection view
        tabMenuHeaderContentTopAnchor?.constant = constant
    }
}

我发现这样做的好处:

  • UIScrollView根据需要轻松添加页面
  • 每个集合视图由其自己的数据源单独管理

我发现的负面因素:

  • 处理多个集合视图的不同内容偏移有点复杂
于 2021-04-03T21:05:05.847 回答