iphone - 手动滚动显示相同内容的两个 UICollectionView

标签 iphone ios uiscrollview uicollectionview uiscrollviewdelegate

正如标题所示,我有一个 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;
}

最佳答案

scrollViewWillBeginDragging: 时跟踪当前拖动的 ScrollView 叫做。

scrollViewDidScroll: ,更新不拖动的 ScrollView :

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    if(scrollView == self.mainCollectionView 
             && self.mainCollectionView == self.scrollingView){ // new check
        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.thumbsCollectionView== self.scrollingView){ // new check
        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;

}

关于iphone - 手动滚动显示相同内容的两个 UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17303772/

相关文章:

带有 Tabbar 的 iOS7 自动布局与 UIScrollView 和可缩放的 UIImageView 不工作

iphone - 在 iphone 中使用 UIScrollView 滚动图像(第 2 部分)

javascript - 从浏览器到本地连接的 iPhone 的文件传输

objective-c - iPhone UI 测试 - 如何访问键盘上的删除键

iphone - 与被拒绝的应用程序有什么更好的关系?

IOS 拖动、轻弹或甩动 UIView

iphone - 加载数据时无法显示 UIActivityIndi​​catorView

ios - 如何弹出 Navigation Controller iOS

ios - Swift:在相机访问请求后转换到其他 View Controller 时崩溃

iphone - 带有滚动按钮​​问题的 UIScrollView