我正在尝试创建一个界面,类似于meetup应用程序中的家庭场景。你可以在下面看到它的作用。我想重新创建[All, Going, ...]
菜单行为。我希望它从列表的中间开始,然后向上滚动,直到它到达列表的顶部并粘在那里。与UITableView
中节头的工作方式非常相似。
创建菜单不是问题。我的问题是创建粘性行为,并让它与列表的其余部分很好地协同工作。
我试过使用UITableView
但我无法让菜单单元格保持不变。我不能将菜单放在节标题中,因为我想对菜单下面的数据使用节标题,而UITableView
的行为是在下一节到达列表顶部时将节标题向上推。我无法将菜单放入UITableView.tableHeader
中,因为菜单从列表中其他一些数据的下面开始。
UITableView
- UITableViewCell -> Label
- UITableViewCell -> UICollectionView of UIImageViews
- UITableViewCell -> Label
- UITableViewCell -> MyMenu (Sticky)
- UITableViewHeaderFooterView - Section 1
- UITableViewCell -> Data
- UITableViewCell -> Data
- UITableViewHeaderFooterView - Section 1
- UITableViewCell -> Data
- UITableViewCell -> Data
我试过使用包含菜单的
UIScrollView
和菜单下面的UITableView
,但是在UITableView
中使用UIScrollView
(这是UIScrollView
)是很痛苦的。我无法让滚动的行为感觉自然。UIScrollView
- UIView -> (Container)
- Label
- UICollectionView of UIImageViews
- Label
- MyMenu (Sticky)
- UITableView - Data
我正准备写一个
UICollectionViewLayout
来做我想做的事情,但我觉得我必须重新创建我用UITableView
免费获得的功能。你知道怎么做吗?也许有一种可靠的方法可以使
UITableViewCell
粘贴,并使随后的节标题粘贴在它下面? 最佳答案
实现这种功能的一种方法是使用这样的视图层次结构:
UIView
- UITableView
- UIView -> (Container)
- Label
- UICollectionView of UIImageViews
- Label
- MyMenu (Sticky)
带有菜单的容器是表视图的同级,但它与表视图重叠。
在scroll view delegate方法中,您可以重新定位菜单容器视图,使菜单位于表内容上方。然后需要告诉表视图在顶部和第一个表单元格之间保留一些空间。为此,您可以配置表视图的
scrollViewDidScroll(_:)
。