2

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

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

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

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

  3. 我在 UIScrollView 上拖了一个捏手势识别器。

  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 ];
      }
    

已知: - 正在识别捏合手势,并且正在调用 handlePinch

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

4

1 回答 1

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 的子视图。

于 2013-04-06T00:08:51.350 回答