2

我有两个并排放置的滚动视图,它们可以单独缩放。我通过将视图放在滚动视图中并设置滚动视图的缩放比例来完成此操作。到目前为止,它工作正常!现在,有一个新的要求,将两张图像缩放在一起,这样如果我缩放一张图像,另一张图像会自动以相同的缩放比例缩放。我得到了roambi 应用程序作为参考,在比较过程中,为了方便起见,可以通过滚动其中一个滚动视图将两个滚动视图一起滚动。基本上,我正在做的也是两种观点之间的比较。我已经完成了滚动视图委托方法,但无法获得所需的结果。我该怎么做呢?

4

2 回答 2

1

我从来没有这样做过,但是在我的脑海中,我会说首先你需要让它们的缩放相同(如上所述),然后你必须使用委托方法来确保您的两个滚动视图都具有相同的 contentOffset 值。即,当一个通过手动滚动或通过编程滚动进行更改时,您必须(使用委托回调)将另一个设置为相同的 contentOffset 值。

编辑:根据要求,添加一些(未测试)代码:

- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
  if(scrollView == self.myFirstScroller)
  {
    self.mySecondScroller.contentOffset = self.myFirstScroller.contentOffset;
  } 
  else {
    self.myFirstScroller.contentOffset = self.mySecondScroller.contentOffset;
  }
}

和上面类似的缩放。

但是,如果您正在寻找一些复制粘贴解决方案,您可以直接进入您的项目,恐怕您必须自学更多关于滚动视图的知识。您应该阅读 Apple 编程指南,因为滚动视图可能有点棘手,而且您通常必须使用相当多的委托方法才能使事情正常工作。

于 2012-04-10T07:22:53.327 回答
0

不久前我实现了类似的东西(我为按钮做了)。我是这样做的:

取两个UIScrollViews 并引用它们(我用过firstScrollViewand secondScrollView

取两个UIButtons 并引用它们(我用过firstImgBtnand secondImgBtn)。将委托设置为滚动视图并使用以下委托方法:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
    //return the respective button in the scrollview to be zoomed
    if(scrollView==firstScrollView){
        return firstImgBtn;
    }
    else{
        return secondImgBtn;
    }
}

- (void)scrollViewDidZoom:(UIScrollView *)scrollView{
    // zoom in the other scrollview when one has zoomed
    if(zoomTogether){//a bool to decide whether to zoom the two together or not
        if(scrollView==firstScrollView){
            secondScrollView.zoomScale = firstScrollView.zoomScale;
        }
        else{
            firstScrollView.zoomScale = secondScrollView.zoomScale;
        }
    }
}

这可以应用于任何子类UIView- 在您的情况下,它将是UIImageViews

于 2012-04-10T05:54:42.183 回答