2009-12-02 79 views
17

我创建了一个可缩放的UIScrollView并为其添加了100个子视图(平铺)。该视图完美地左右滚动。不过,我想允许缩放。正确缩放包含许多子视图的UIScrollView

要做到这一点,我读了我的委托需要实现:

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

我已经看到,只有一个子视图放大,所以他们返回子视图在该方法的例子。但就我而言,我还有更多。缩放的正确方法是什么?

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

+0

您是否尝试过在返回的UIScrollView本身? – fbrereto 2009-12-02 21:55:54

+0

是的,这是我第一次尝试。它也搞砸了...... – Dimitris 2009-12-02 22:48:42

回答

40

没错,

这就是苹果也提的是在Scroll View Programming Guide

只需创建一个视图,所有子视图添加到该视图,并添加新创建的视图作为一个子视图滚动视图。

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

我创建其中I使用添加的一切视图:

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

无需设置其框架。

这个问题在添加所有子视图到它之后解决,我将其框架设置为足够大以容纳所有平铺子视图。

+0

也适用于我 - 将父视图的帧大小设置为其子视图的最大帧大小(女巫是我的情况下的图像大小)。 – Yony 2013-08-19 17:33:09

0

您甲肝:..

然后在viewForZoomingInScrollView委托方法在索引0返回对象e返回你想要添加视图作为子视图滚动视图。

例如:如果要添加图像视图滚动视图然后写

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