我有一個自定義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的屬性。