正如标题所暗示的,我有UIViewController
两个UICollectionViews
以水平方式显示相同的内容。主要的一次显示一张照片,拇指显示几张。
我重写了该UIScrollViewDelegate
方法并添加了一些代码,这样当用户滚动主 CV 时,拇指 CV 也会滚动。但是,我也想启用相反的功能(滚动拇指将快速移动主体)。但是我得到了反馈效果。
这是我的代码片段:
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(scrollView == self.mainCollectionView){
CGFloat x = self.mainCollectionView.contentOffset.x / self.mainCollectionView.bounds.size.width * SM_IPHONE_THUMB_CONTAINER_SIZE; // cell width + spacing 48 + 8
CGFloat y = 0;
CGPoint contentOffset = CGPointMake(x, y);
self.thumbsCollectionView.contentOffset = contentOffset;
}
else if(scrollView == self.thumbsCollectionView){
// CGFloat x = self.thumbsCollectionView.contentOffset.x / self.thumbsCollectionView.bounds.size.width * SM_IPHONE_THUMB_CONTAINER_SIZE; // cell width + spacing 48 + 8
// CGFloat y = 0;
// CGPoint contentOffset = CGPointMake(x, y);
// self.mainCollectionView.contentOffset = contentOffset;
}
}
我想我可以跟踪着陆/上升事件以掩盖允许发生的事情,但在我尝试之前,我想我会看看是否有不同的方法来做到这一点?我是否忽略了提供的方法来帮助我?
谢谢。
编辑:解决方案。有一个 UIScrollViewDelegate 方法提供了我需要跟踪哪个布局被触摸。更新代码:
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
if(scrollView == self.mainCollectionView &&
self.scrollingView == self.mainCollectionView){
CGFloat x = self.mainCollectionView.contentOffset.x / self.mainCollectionView.bounds.size.width * SM_IPHONE_THUMB_CONTAINER_SIZE; // cell width + spacing 48 + 8
CGFloat y = 0;
CGPoint contentOffset = CGPointMake(x, y);
self.thumbsCollectionView.contentOffset = contentOffset;
}
else if(scrollView == self.thumbsCollectionView &&
self.scrollingView == self.thumbsCollectionView){
CGFloat x = self.thumbsCollectionView.contentOffset.x / SM_IPHONE_THUMB_CONTAINER_SIZE * self.mainCollectionView.frame.size.width; // cell width + spacing 48 + 8
CGFloat y = 0;
CGPoint contentOffset = CGPointMake(x, y);
self.mainCollectionView.contentOffset = contentOffset;
}
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
self.scrollingView = scrollView;
}