Как нажать для увеличения и двойного нажатия, чтобы уменьшить масштаб в iOS?

Я разрабатываю приложение для отображения галереи UIImages с помощью UIScrollView , мой вопрос заключается в том, как использовать zoom и двойное нажатие, чтобы zoom масштаб, как это работает при работе с UIScrollView .

Вам нужно реализовать 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]; } 

В основном этот код говорит о том, что когда 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]; } 

надеюсь, это поможет

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) 

Обработчик:

 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)) } } 
Interesting Posts
Давайте будем гением компьютера.