Я разрабатываю приложение для отображения галереи UIImages с помощью UIScrollView, мой вопрос: как нажать на zoom и дважды коснуться zoom, как это работает при обработке с UIScrollView.
Как нажать для увеличения и двойного нажатия, чтобы уменьшить масштаб в iOS?
Ответ 1
Вам нужно реализовать UITapGestureRecognizer - docs здесь - в вашем viewController
- (void)viewDidLoad
{
    [super viewDidLoad];       
    // what object is going to handle the gesture when it gets recognised ?
    // the argument for tap is the gesture that caused this message to be sent
    UITapGestureRecognizer *tapOnce = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapOnce:)];
    UITapGestureRecognizer *tapTwice = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTwice:)];
    // set number of taps required
    tapOnce.numberOfTapsRequired = 1;
    tapTwice.numberOfTapsRequired = 2;
    // stops tapOnce from overriding tapTwice
    [tapOnce requireGestureRecognizerToFail:tapTwice];
    // now add the gesture recogniser to a view 
    // this will be the view that recognises the gesture  
    [self.view addGestureRecognizer:tapOnce];
    [self.view addGestureRecognizer:tapTwice];
}
В основном этот код говорит, что, когда a UITapGesture зарегистрирован в self.view, метод  tapOnce или  tapTwice будет вызван в self в зависимости от того, один или двойной кран. Поэтому вам необходимо добавить эти методы tap к вашему UIViewController:
- (void)tapOnce:(UIGestureRecognizer *)gesture
{
    //on a single  tap, call zoomToRect in UIScrollView
    [self.myScrollView zoomToRect:rectToZoomInTo animated:NO];
}
- (void)tapTwice:(UIGestureRecognizer *)gesture
{
    //on a double tap, call zoomToRect in UIScrollView
    [self.myScrollView zoomToRect:rectToZoomOutTo animated:NO];
}
Надеюсь, что поможет
Ответ 2
версия Swift 3.0, которая дважды масштабируется дважды.
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var imageView: UIImageView!
Где-то (обычно в viewDidLoad):
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(onDoubleTap(gestureRecognizer:)))
tapRecognizer.numberOfTapsRequired = 2
scrollView.addGestureRecognizer(tapRecognizer)
Handler:
func onDoubleTap(gestureRecognizer: UITapGestureRecognizer) {
    let scale = min(scrollView.zoomScale * 2, scrollView.maximumZoomScale)
    if scale != scrollView.zoomScale {
        let point = gestureRecognizer.location(in: imageView)
        let scrollSize = scrollView.frame.size
        let size = CGSize(width: scrollSize.width / scale,
                          height: scrollSize.height / scale)
        let origin = CGPoint(x: point.x - size.width / 2,
                             y: point.y - size.height / 2)
        scrollView.zoom(to:CGRect(origin: origin, size: size), animated: true)
        print(CGRect(origin: origin, size: size))
    }
}