2016-06-07 80 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

当然,这两种方法都可用 –