正确缩放包含许多子视图的UIScrollView

时间:2009-12-02 21:29:19

标签: iphone objective-c uiscrollview zoom

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

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

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

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

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

3 个答案:

答案 0 :(得分:43)

完全,

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

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

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

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{
    return [self.scrollView.subviews objectAtIndex:0];
}

答案 1 :(得分:2)

我创建了视图,我在其中添加了所有内容:

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

没有设置框架。

在将所有子视图添加到其中后,我将其框架设置为足以容纳所有平铺子视图的内容时,问题得以解决。

答案 2 :(得分:0)

您必须返回要添加视图的内容以滚动视图作为子视图。

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

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