在 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