20

我创建了一个可缩放的 UIScrollView 并向其添加了 100 个子视图(平铺)。视图左右滚动完美。但是,我想允许缩放。

为此,我读到我的代表需要实现:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return ???;
}

我见过只有一个子视图可以缩放的例子,所以他们在那个方法中返回那个子视图。然而,就我而言,我还有很多。进行缩放的正确方法是什么?

我尝试创建另一个 UIView 并将 100 个子视图添加到那个。然后在上面的方法上返回一个视图,但我不起作用(它会缩放,但一旦停止,它就不再是交互式的了)。

4

3 回答 3

44

确切地,

这也是 Apple 在Scroll View Programming Guide中提到的内容:

只需创建一个视图,将所有子视图添加到此视图,然后将新创建的视图作为单个子视图添加到滚动视图...

然后在 viewForZoomingInScrollView 委托方法中返回索引 0 处的对象:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
    return [self.scrollView.subviews objectAtIndex:0];
}
于 2010-04-08T21:36:15.510 回答
2

我创建了添加所有内容的视图:

UIView *zoomableView = [[UIView alloc] init];

没有设置它的框架。

在向其中添加所有子视图之后,我将其框架设置为足够大以容纳所有平铺子视图时,问题就解决了。

于 2009-12-03T00:04:49.070 回答
0

您必须将要添加的视图作为子视图返回到滚动视图。

例如:如果要将图像视图添加到滚动视图,则编写

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
return imageView object;
}
于 2012-12-04T14:23:11.000 回答