我有两个并排放置的滚动视图,它们可以单独缩放。我已经通过将我的视图放在滚动视图中并为滚动视图设置缩放比例来完成此操作。到目前为止,它工作正常!现在,有一个新要求将两个图像缩放在一起,这样,如果我缩放一个图像,另一个图像会自动缩放,缩放比例相同。我被赋予roambi app作为参考,其中两个滚动视图可以通过滚动其中一个滚动视图来方便比较。基本上,我正在做的也是两个视图之间的比较。我已经通过scrollview委托方法,但无法达到所需的结果。我该怎么做?
答案 0 :(得分:1)
我从来没有这样做过,但我首先要说的是你需要让缩放在两者中都相同(如上所述),那么你将不得不使用委托方法确保您的两个滚动视图具有相同的contentOffset值。即,当通过手动滚动或通过编程滚动进行更改时,您必须(使用委托回调)将另一个设置为相同的contentOffset值。
编辑:根据请求,添加一些(UNTESTED)代码:
- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
if(scrollView == self.myFirstScroller)
{
self.mySecondScroller.contentOffset = self.myFirstScroller.contentOffset;
}
else {
self.myFirstScroller.contentOffset = self.mySecondScroller.contentOffset;
}
}
和上面类似的缩放。
但如果您正在寻找一些复制粘贴解决方案,您可以直接进入您的项目,我担心您将不得不自学更多关于滚动视图的内容。您应该阅读Apple编程指南,因为滚动视图可能有点棘手,而且您经常需要使用相当多的委托方法来使事情正常工作。
答案 1 :(得分:0)
我刚刚实现了类似的东西(我为按钮做了)。我就这样做了:
取两个UIScrollView
并引用它们(我已使用firstScrollView
和secondScrollView
)
选择两个UIButton
并引用它们(我已使用firstImgBtn
和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
的任何子类 - 在您的情况下,它将是UIImageView
s