Отключить масштабирование в UIPinchGestureRecognizer - PullRequest
0 голосов
/ 08 июня 2018

Я хочу отключить масштабирование, я попытался сделать это через раскадровку в UIScrollView, установив значение min, но это не имело никакого значения.

let tap = UIPinchGestureRecognizer(target: self, action: #selector(self.pinchHandler(gesture:)))
tap.delegate = self as? UIGestureRecognizerDelegate
self.scrollView.addGestureRecognizer(tap)

@objc private func pinchHandler(gesture: UIPinchGestureRecognizer) {
    if let view = gesture.view {
        switch gesture.state {
        case .changed:
           self.navigationController?.isNavigationBarHidden = true
            let pinchCenter = CGPoint(x: gesture.location(in: view).x - view.bounds.midX,
                                      y: gesture.location(in: view).y - view.bounds.midY)
            let transform = view.transform.translatedBy(x: pinchCenter.x, y: pinchCenter.y)
                .scaledBy(x: gesture.scale, y: gesture.scale)
                .translatedBy(x: -pinchCenter.x, y: -pinchCenter.y)
            view.transform = transform
            gesture.scale = 1

        case .ended:
            UIView.animate(withDuration: 0.2, animations: {
                view.transform = CGAffineTransform.identity
                   self.navigationController?.isNavigationBarHidden = false
            })
        default:
            return
        }  
    }
}

1 Ответ

0 голосов
/ 08 июня 2018

Итак, чтобы повторить то, что Куок упомянул в комментарии, ваш код должен выглядеть примерно так:

@objc private func pinchHandler(gesture: UIPinchGestureRecognizer) {
if let view = gesture.view {
    switch gesture.state {
    case .changed:

        if(gesture.scale < 1.0) { return }
        //your code

    case .ended:
        //your code

    default:
        return
    }  
  }
}
...