iOS编程放大UIScrollView不起作用

时间:2013-02-04 22:04:15

标签: ios ios5 ios6 uiscrollview

我是iOS的新手,我已经被困了一段时间。我的目标是在用户捏住视图中的任何位置时以编程方式缩放到特定位置。这可能看起来很奇怪,但它不是App Store的内部应用程序。现在,当我捏缩放时,没有任何反应。

在我的视图(它是单个视图应用程序)上,我有想要以编程方式放大的图像。这就是我所做的。

  1. 在Interface Builder中,我将Scroll View对象拖到我的View上,并将大小更改为适合View

  2. 在滚动视图中,我设置了最小缩放= 0和最大缩放= 1000(只是为了确保这不是问题)

  3. 我在UIScrollView上拖了一个Pinch Gesture Recognizer。

  4. 我右键单击了UIGestureRecognizer,并创建了一个名为handlePinch()的动作,其中我将代码放置在识别到夹点时以编程方式进行缩放。

  5. 在handlePinch中实现了缩放(如下所示)

    - (IBAction)handlePinch:(UIPinchGestureRecognizer *)sender {
        CGRect zoomRect;
    
        zoomRect.origin.x = 500;
        zoomRect.origin.y = 500;
        zoomRect.size.width = 512;
        zoomRect.size.height = 384;
    
        [scrollView zoomToRect:zoomRect animated:YES ];
      }
    
  6. 已知: - 正在识别捏合手势,并且正在调用handlePinch

    提前感谢您的任何答案或建议!

1 个答案:

答案 0 :(得分:2)

由于内置了缩放功能,因此您无需执行捏合手势。这是做什么的。

在视图控制器头文件中,添加滚动视图委托:

@interface MyViewController : UIViewController <UIScrollViewDelegate>

接下来在实现文件中,最好在viewDidLoad中,将滚动视图的委托设置为self:

- (void)viewDidLoad {
    //other stuff
    self.scrollView.delegate = self;
}

然后,将此滚动视图委托方法复制并粘贴到您的实现文件中:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    if (scrollView == self.scrollView) {
        return self.viewToBeZoomed;
    }
}    

self.viewToBeZoomed是您要缩放的视图。该视图是self.scrollView的子视图。