我有一个UICollectionView
,看起来像是横向模式下的Apple日历。
每个单元格都有一个嵌入式UICollectionView
我需要每一天都可以垂直滚动,其余的日子也要遵循相同的滚动。
我尝试过的内容
我试图将外部集合嵌入到滚动视图中,并将滚动视图的内容设置为足够大,以使其加载所有内部UICollectionView
高度,然后禁用内部滚动,因此外部滚动导致方式。
我尝试过的问题
这会导致外部UICollectionView
的水平滚动出现很大的滞后,因为这迫使我在屏幕外部加载许多笔尖。
然后,我尝试像这样对嵌入式UICollectionViews
的内部滚动进行同步:
protocol ScrollSyncDelegate {
func scrolledTo(offset: CGPoint)
}
extension CalendarViewController2: ScrollSyncDelegate {
func scrolledTo(offset: CGPoint) {
dayCollectionView.visibleCells.forEach { cell in
if let dayCell = cell as? DayCollectionViewCell {
dayCell.streamableDayCollectionView.setContentOffset(offset, animated: false)
dayCell.daySideBar.setContentOffset(offset, animated: false)
}
}
self.sideHoursCollectionView.setContentOffset(offset, animated: false)
}
}
和我内心的UICollectionView
:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView == self {
scrollSyncDelegate?.scrolledTo(offset: scrollView.contentOffset)
}
}
这导致滚动非常缓慢,根本不会减速。
这怎么能顺利实现?