2009-12-02 77 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; 
}