2016-06-07 81 views
0

我正在加載imageview,如下所示。 self.displayReceivedImageScrollView是頭文件中定義的scrollview屬性。無法縮放雙擊圖像

_displayImage.image = nil; 


     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void) { 
      NSData *data0 = [NSData dataWithContentsOfURL: [NSURL URLWithString:savedValue]]; 
      UIImage *image = [UIImage imageWithData: data0]; 

      dispatch_sync(dispatch_get_main_queue(), ^(void) { 
       _displayImage.image = image; 
      }); 
     }); 


    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; 

    [doubleTap setNumberOfTapsRequired:2]; 

    [self.displayReceivedImageScrollView addGestureRecognizer:doubleTap]; 

以下是我的doubleTap處理程序。我想要在用戶雙擊圖像時縮放圖像。

- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer { 

    if(self.displayReceivedImageScrollView.zoomScale > self.displayReceivedImageScrollView.minimumZoomScale) 
     [self.displayReceivedImageScrollView setZoomScale:self.displayReceivedImageScrollView.minimumZoomScale animated:YES]; 
    else 
     [self.displayReceivedImageScrollView setZoomScale:self.displayReceivedImageScrollView.maximumZoomScale animated:YES]; 

} 

但問題是,圖像沒有被放大。 handleDoubleTap方法並沒有被解僱,爲什麼這樣呢?

+0

如果我是你,放大/縮小分量的,我會用CGAffineTransformScale方法(https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGAffineTransform /)。它非常易於使用,你應該用一個捏手勢識別器來嘗試。如果你願意,我也可以發佈一個實際用於放大/縮小的捏手勢識別器的樣本;) – Kokodelo

+0

請給我一個示例代碼。謝謝 – Roger

回答

1

可以使變焦使通過把你的觀點,滾動型,並配置:

@property(nonatomic) CGFloat minimumZoomScale;  // default is 1.0 
@property(nonatomic) CGFloat maximumZoomScale;  // default is 1.0. must be > minimum zoom scale to enable zooming 
+0

能否請你參考我的代碼解釋 – Roger

0

這裏是你問我的意見示例代碼:

這裏是如何申報UIPinchGestureRecognizer

-(IBAction)scaleImage:(UIPinchGestureRecognizer *)recognizer{ 
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); 
recognizer.scale = 1; 
} 

而在你ViewDidLoad或其他地方把它添加到您的View或別的東西:

UIPinchGestureRecognizer *scaleImage =[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scaleImage:)]; 
[View_Or_Somehting_Else addGestureRecognizer:scaleImage]; 

注:識別器和你將它添加到您的視圖必須在同一個文件,或者把它作爲一個方法的參數的地方代碼;)

1

你加入圖像視圖的識別器。

您是否啓用用戶交互?

self.displayReceivedImageScrollView.userInteractionEnabled = YES; 

默認情況下,交互將被禁用,因此它不會響應任何觸摸事件。

0

您需要啓用用戶交互,只需從界面構建器中選擇您的ImageView,然後轉到「屬性」檢查器並選中交互框。

enter image description here

+0

你也可以通過使用'serUserInterractionEnabled:'方法編程的方式來做到這一點,它給了我們一個樣本:'[the_Object_You_Want setUserInteractionEnabled:NO]'或者把它放到是的,如果你想,這取決於。 – Kokodelo

+0

當然,這兩種方法都可用 –