Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @objc func pan(sender: UIPanGestureRecognizer) {
- if self.isZooming && sender.state == .began {
- self.originalImageCenter = sender.view?.center
- } else if self.isZooming && sender.state == .changed {
- let translation = sender.translation(in: self)
- if let view = sender.view {
- view.center = CGPoint(x:view.center.x + translation.x,
- y:view.center.y + translation.y)
- }
- sender.setTranslation(CGPoint.zero, in: self.imageView.superview)
- }
- }
- @objc func pinch(sender:UIPinchGestureRecognizer) {
- NotificationCenter.default.post(name: Notification.Name(rawValue: "disablePage"), object: nil)
- if sender.state == .began {
- let currentScale = self.imageView.frame.size.width / self.imageView.bounds.size.width
- let newScale = currentScale*sender.scale
- if newScale > 1 {
- self.isZooming = true
- }
- } else if sender.state == .changed {
- guard let view = sender.view else {return}
- let pinchCenter = CGPoint(x: sender.location(in: view).x - view.bounds.midX,
- y: sender.location(in: view).y - view.bounds.midY)
- let transform = view.transform.translatedBy(x: pinchCenter.x, y: pinchCenter.y)
- .scaledBy(x: sender.scale, y: sender.scale)
- .translatedBy(x: -pinchCenter.x, y: -pinchCenter.y)
- let currentScale = self.imageView.frame.size.width / self.imageView.bounds.size.width
- var newScale = currentScale*sender.scale
- if newScale < 1 {
- newScale = 1
- let transform = CGAffineTransform(scaleX: newScale, y: newScale)
- self.imageView.transform = transform
- sender.scale = 1
- }else {
- view.transform = transform
- sender.scale = 1
- }
- } else if sender.state == .ended || sender.state == .failed || sender.state == .cancelled {
- guard let center = self.originalImageCenter else {return}
- UIView.animate(withDuration: 0.3, animations: {
- self.imageView.transform = CGAffineTransform.identity
- self.imageView.center = center
- }, completion: { _ in
- self.isZooming = false
- NotificationCenter.default.post(name: Notification.Name(rawValue: "enablePage"), object: nil)
- })
- }
- }
- func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
- return true
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement