在 UIScrollView 中放大多个 UIImageView

Posted

技术标签:

【中文标题】在 UIScrollView 中放大多个 UIImageView【英文标题】:zoom in with multiple UIImageView in UIScrollView 【发布时间】:2012-08-28 16:00:08 【问题描述】:

我在放大时遇到了一些问题,当我放大时下一个 UIImageView 超出了我正在放大的 UIImageView。

我将 UIImageView 加载到我在控制器中调用的 UIScrollView 的子类中。 加载功能和滚动功能完美运行

第一个问题是当我放大时,下一个 UIImageView 超出了我正在放大的那个。

所以我尝试将每个 UIImageView 放入我放入 ScrollView 的 UIView 中,但它执行相同的操作...

我遇到的第二个问题是,当我放大时,我的滚动不再起作用了。

- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView 
// Return the view that you want to zoom
NSLog(@"viewForZoomingInScrollView - current : %d",self.scrollPageControl.currentPage);
return [[[[self.productImageScrollView subviews]objectAtIndex:0] subviews]objectAtIndex:self.scrollPageControl.currentPage];
//return [[self.productImageScrollView subviews] objectAtIndex:0];
//return [self.productImageScrollView getSubViewsByPage:[NSNumber numberWithInteger:[self.scrollPageControl currentPage]]];

第一个返回返回一个UIView的UIImageView 第二个返回 UIView 当我不使用 UIView 时,第三个返回 UIImageView。

我看到了很多类似的问题,但我尝试过的没有任何帮助... 所以我打电话给你! 如果我不清楚,请问我。

【问题讨论】:

【参考方案1】:

尝试创建一个 UIView *(也许称它为 contentView)并将所有 UIImageView 作为该 contentView 的子视图

那么,在

- (UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView 
    return contentView;

【讨论】:

我尝试过的:“所以我尝试将每个 UIImageView 放在我放入 ScrollView 的 UIView 中,但它做同样的事情......”【参考方案2】:

您是否在方法中返回该视图?这是关键部分...

滚动视图只会缩放您在 viewForZooming 中返回的视图,因此如果您返回其中一张图像,其余的将不会缩放。 我假设您按顺序添加它们,因此当放大的放大时,下一个将保持静止,因此位于当前的顶部

尝试将所有图像添加到视图中,然后在 viewForZoomingInScrollView 中返回相同的视图:

【讨论】:

是的,这就是我所做的,但我自己找到了解决方案……:我只是使用了另一个我子类化的滚动视图,并在其中放置了缩放功能委托。那工作完美......但不是在ipad上...... @user1630800 我遇到了同样的问题,你能解释一下解决方案吗? 请分享您的解决方案,问问题很粗鲁。找到答案,不要分享。 :D【参考方案3】:

这是确定要缩放的对象的函数:

func viewForZooming(in scrollView: UIScrollView) -> UIView?
    return scrollImageView

然后您可以将您想要的内容作为子视图添加到该对象,它会缩放到:

scrollImageView.addSubview(teritorysImages)

【讨论】:

以上是关于在 UIScrollView 中放大多个 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 中的 UItextfield 并用放大镜移动光标

如何使用 UISlider 在 UIScrollView 中进行放大、缩小?

UIImageView 点击放大而不使用 UIScrollView

在 iPhone 中使用 UIScrollView 和 ImageView 滚动图像

放大时只允许 UIScrollView 缩放弹跳,不能缩小

当已经完全放大时,如何强制 UIScrollView 完全忽略放大手势?