en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

9.12.2013

使用 UIScrollView 實作圖片的縮放與移動

  

在實作圖片的縮放與移動中,通常第一個聯想到的就是使用 UIGestureRecognizer 手勢識別物件來實作,透過強大的 UIGestureRecognizer 物件來辨識手勢操作並且實作對應的動作,但是如果只是想要實作圖片的移動與縮放,其實大可不必這麼麻煩,透過 UIScrollView 來實作此效果,反而更快且更有效率,因為在 UIScrollView 的定義中早就已經將 UIPanGestureRecognizer 與 UIPinchGestureRecognizer 做好對應的互動,我們只要借用 <UIScrollViewDelegate> 協定就可以完成此效果。


實作方法
在實做縮放之前,首先要先把 <UIScrollViewDelegate> 協定加入目前實作的類別中當中。
@interface MLViewController : UIViewController <UIScrollViewDelegate>
接著設定 UIScrollView 的縮放比例限制,與實作協定的目標類別。
//設定比例限制、實作協定的類別
[myScrollView setMaximumZoomScale:3.0];
[myScrollView setMinimumZoomScale:0.5];
[myScrollView setDelegate:self];

//加入圖片
UIImageView *myImageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"3Dlogo.png"]];
[myScrollView addSubview:myImageView];

最後,我們實作 <UIScrollViewDelegate> 協定中的 viewForZoomingInScrollView: 方法函式,回傳一個縮放結果的 UIView 即可。
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return [[scrollView subviews]objectAtIndex:0];
}


相關文章






6 則留言:

  1. 原來讓圖片移動和縮放這麼簡單就可以做到!
    感謝淺顯易懂的教學~

    回覆刪除
  2. 怎麼新增多個UIGestureRecognizer?

    回覆刪除
    回覆
    1. 請看這篇:
      手勢辨識 UIGestureRecognizer 物件
      http://furnacedigital.blogspot.tw/2012/06/uigesturerecognizer.html

      刪除