我必须制作这个与 Instagram 个人资料具有相同逻辑的控制器
- 选项卡和标题
- 固定在顶部的选项卡
我正在使用 UICollectionViewCompositionalLayout 和选项卡逻辑的问题。我使用一个收集单元并根据选项卡更改日期。但是偏移和动画的问题。我该如何改变它或者我应该使用其他方式?
我必须制作这个与 Instagram 个人资料具有相同逻辑的控制器
我正在使用 UICollectionViewCompositionalLayout 和选项卡逻辑的问题。我使用一个收集单元并根据选项卡更改日期。但是偏移和动画的问题。我该如何改变它或者我应该使用其他方式?
我已经成功地使用了(也很头疼:),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
根据需要轻松添加页面我发现的负面因素: