正确缩放包含许多子视图的 UIScrollView
Posted
技术标签:
【中文标题】正确缩放包含许多子视图的 UIScrollView【英文标题】:Properly zooming a UIScrollView that contains many subviews 【发布时间】:2009-12-02 21:29:19 【问题描述】:我创建了一个可缩放的 UIScrollView 并向其中添加了 100 个子视图(平铺)。视图左右滚动完美。但是,我想允许缩放。
为此,我读到我的代表需要实现:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
return ???;
我见过只有一个子视图可以缩放的例子,所以他们在那个方法中返回那个子视图。然而,就我而言,我还有很多。进行缩放的正确方法是什么?
我尝试创建另一个 UIView 并向其中添加 100 个子视图。然后在上面的方法中返回一个视图,但我不起作用(它会缩放,但一旦停止,它就不再具有交互性了)。
【问题讨论】:
您是否尝试过返回 UIScrollView 本身? 是的,这是我尝试的第一件事。它也把事情搞砸了...... 【参考方案1】:没错,
这也是苹果在Scroll View Programming Guide 中提到的:
只需创建一个视图,将所有子视图添加到此视图,然后将新创建的视图作为单个子视图添加到滚动视图...
然后在 viewForZoomingInScrollView 委托方法中返回 Index 0 处的对象:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
return [self.scrollView.subviews objectAtIndex:0];
【讨论】:
【参考方案2】:我创建了添加所有内容的视图:
UIView *zoomableView = [[UIView alloc] init];
不设置框架。
当我添加了所有子视图之后,我将它的框架设置为足够大以容纳所有平铺子视图时,问题就解决了。
【讨论】:
也为我工作 - 将父视图的帧大小设置为其子视图的最大帧大小(在我的情况下,女巫是图像大小)。【参考方案3】:您必须将您要添加的视图作为子视图返回到滚动视图。
例如:如果您将图像视图添加到滚动视图,则编写
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
return imageView object;
【讨论】:
以上是关于正确缩放包含许多子视图的 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章