2010-02-05 45 views
4

我有一個自定義UIViewController子類控制包含的UIImageView一個UIScrollView,設置像這樣:的UIScrollView奇怪的行爲:縮放,平移,縮小離開內容視圖非中心

UIViewController 
+ UIScrollView (delegate: UIViewController, viewForZoomingInView: UIImageView) 
    + UIImageView 

我可以使用的UIScrollView放大在我的圖像上,然後平移 - 但如果我這樣做,以便視圖的中心不是圖像的中心,然後完全縮小,則圖像偏離中心;更重要的是,由於當時我處於最小縮放比例,所以我無法四處移動以重新定位我的圖像。

我的期望是縮小時,UIScrollView會將contentSize的區域重新居中在其邊界之下,以便您永遠不會超出內容視圖的邊緣(或內容視圖的大小加上contentInset)。這個假設我錯了嗎?

如果是這樣,我該怎麼做才能提供這種行爲?

這裏是我的代碼:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    imageView.image = image; 
    [imageView sizeToFit]; 

    float minimumScale = [imageScrollView frame].size.width/[imageView frame].size.width; 

    imageScrollView.contentSize = [imageView frame].size;  
    imageScrollView.maximumZoomScale = 2.0; 
    imageScrollView.minimumZoomScale = minimumScale; 

    imageScrollView.zoomScale = imageScrollView.minimumZoomScale; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return YES; 
} 

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

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale 
{ 
    // nothing 
} 

編輯:解決方案!

您必須在UIScrollView上設置clipsToBounds = YES以獲得所需的行爲。我最初沒有找到它,因爲它是UIView的一個屬性,而不是UIScrollView的屬性。

回答

1

我在我的UIImageView上看到了同樣的內容,在IB中我檢查了「Clip子視圖」,圖像視圖開始表現得更好。