Ios 制作两个UICollectionView';s在启用分页的情况下同步滚动
是否可以使两个CollectionView同步滚动?如果可以,如何滚动 我有一个类,包含两个collectionview,一个包含日期,另一个包含tableview,元素与第一个collectionview中的日期匹配。 当我滚动日期或元素时,我希望它们彼此跟随 以下是一些代码,以及我到目前为止尝试过的代码,但没有任何运气: 我将ScrollViewDelegate添加到我的类中,并尝试此委托方法:Ios 制作两个UICollectionView';s在启用分页的情况下同步滚动,ios,swift,uiscrollview,uicollectionview,scroll-paging,Ios,Swift,Uiscrollview,Uicollectionview,Scroll Paging,是否可以使两个CollectionView同步滚动?如果可以,如何滚动 我有一个类,包含两个collectionview,一个包含日期,另一个包含tableview,元素与第一个collectionview中的日期匹配。 当我滚动日期或元素时,我希望它们彼此跟随 以下是一些代码,以及我到目前为止尝试过的代码,但没有任何运气: 我将ScrollViewDelegate添加到我的类中,并尝试此委托方法: func scrollViewDidScroll(scrollView: UIScrollVie
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.isEqual(dayCollectionView) {
var offset = contentCollectionView.contentOffset
offset.x = dayCollectionView.contentOffset.x
contentCollectionView.setContentOffset(offset, animated: true)
} else {
var offset = dayCollectionView.contentOffset
offset.x = contentCollectionView.contentOffset.x
dayCollectionView.setContentOffset(offset, animated: true)
}
}
这种方法有一定的效果,但是scrollview的第一次开始滚动时,它只是处于精神状态,似乎无法停止滚动
我也试过:
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
if scrollView.isEqual(dayCollectionView) {
// Days
for cell in self.dayCollectionView.visibleCells() {
if let indexPath = dayCollectionView.indexPathForCell(cell) {
contentCollectionView.scrollToItemAtIndexPath(indexPath, atScrollPosition: .None, animated: true)
}
}
} else {
// Classes
for cell in self.contentCollectionView.visibleCells() {
if let indexPath = contentCollectionView.indexPathForCell(cell) {
dayCollectionView.scrollToItemAtIndexPath(indexPath, atScrollPosition: .None, animated: true)
}
}
}
}
这是迄今为止最好的解决方案-但它仍然不是我想要的-这一个滚动,当其他collectionview完成滚动。。但我希望它们同步滚动:-)
有什么建议吗?的确,scrollViewDidScroll(:)方法是处理此类体验的最佳方法 这里似乎发生的是,委托方法scrollViewDidScroll被调用用于第一个CollectionView,当contentOffset应用于另一个CollectionView时,委托方法再次被调用,scroll被应用于原始CollectionView。您需要识别此时正在滚动哪个CollectionView 为此,可以使用UIScrollView的属性
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.isEqual(dayCollectionView), scrollView.isDragging {
var offset = contentCollectionView.contentOffset
offset.x = dayCollectionView.contentOffset.x
contentCollectionView.setContentOffset(offset, animated: true)
} else if scrollView.isEqual(contentCollectionView), scrollView.isDragging {
var offset = dayCollectionView.contentOffset
offset.x = contentCollectionView.contentOffset.x
dayCollectionView.setContentOffset(offset, animated: true)
}
}
谢谢你,伙计!我没有完全工作,但我想这是因为我启用了分页功能。。因此,我想我会坚持使用ScrollViewDiEnd减速,即使这不是我想要的——但我想这是我能得到的最接近的结果:/但如果你有解决方案,我正在听;)