Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. @objc func pan(sender: UIPanGestureRecognizer) {
  2.  
  3. if self.isZooming && sender.state == .began {
  4. self.originalImageCenter = sender.view?.center
  5. } else if self.isZooming && sender.state == .changed {
  6. let translation = sender.translation(in: self)
  7. if let view = sender.view {
  8. view.center = CGPoint(x:view.center.x + translation.x,
  9. y:view.center.y + translation.y)
  10. }
  11. sender.setTranslation(CGPoint.zero, in: self.imageView.superview)
  12. }
  13. }
  14.  
  15. @objc func pinch(sender:UIPinchGestureRecognizer) {
  16. NotificationCenter.default.post(name: Notification.Name(rawValue: "disablePage"), object: nil)
  17.  
  18. if sender.state == .began {
  19. let currentScale = self.imageView.frame.size.width / self.imageView.bounds.size.width
  20. let newScale = currentScale*sender.scale
  21. if newScale > 1 {
  22. self.isZooming = true
  23. }
  24. } else if sender.state == .changed {
  25. guard let view = sender.view else {return}
  26. let pinchCenter = CGPoint(x: sender.location(in: view).x - view.bounds.midX,
  27. y: sender.location(in: view).y - view.bounds.midY)
  28. let transform = view.transform.translatedBy(x: pinchCenter.x, y: pinchCenter.y)
  29. .scaledBy(x: sender.scale, y: sender.scale)
  30. .translatedBy(x: -pinchCenter.x, y: -pinchCenter.y)
  31. let currentScale = self.imageView.frame.size.width / self.imageView.bounds.size.width
  32. var newScale = currentScale*sender.scale
  33. if newScale < 1 {
  34. newScale = 1
  35. let transform = CGAffineTransform(scaleX: newScale, y: newScale)
  36. self.imageView.transform = transform
  37. sender.scale = 1
  38. }else {
  39. view.transform = transform
  40. sender.scale = 1
  41. }
  42. } else if sender.state == .ended || sender.state == .failed || sender.state == .cancelled {
  43. guard let center = self.originalImageCenter else {return}
  44. UIView.animate(withDuration: 0.3, animations: {
  45. self.imageView.transform = CGAffineTransform.identity
  46. self.imageView.center = center
  47. }, completion: { _ in
  48. self.isZooming = false
  49.  
  50. NotificationCenter.default.post(name: Notification.Name(rawValue: "enablePage"), object: nil)
  51.  
  52. })
  53. }
  54. }
  55.  
  56.  
  57. func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
  58. return true
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement