Guest User

Untitled

a guest
May 23rd, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. import UIKit
  2.  
  3. class sample: UIViewController {
  4.  
  5. @IBOutlet weak var image1: UIImageView!
  6. @IBOutlet weak var image2: UIImageView!
  7. @IBOutlet weak var target1: UIImageView!
  8. @IBOutlet weak var target2: UIImageView!
  9.  
  10. var target1flg: Bool!
  11. var target2flg: Bool!
  12.  
  13. var imageViewOrigin: CGPoint!
  14.  
  15. override func viewDidLoad() {
  16. super.viewDidLoad()
  17.  
  18. target1flg = true
  19. target2flg = true
  20.  
  21. addPanGesture(v: image1)
  22. addPanGesture(v: image2)
  23.  
  24. }
  25.  
  26. func addPanGesture(v: UIView) {
  27.  
  28. let pan = UIPanGestureRecognizer(target: self, action: #selector(sample.handlePan(sender:)))
  29. v.addGestureRecognizer(pan)
  30. }
  31.  
  32. @objc func handlePan(sender: UIPanGestureRecognizer) {
  33.  
  34. let pannedImageView = sender.view!
  35.  
  36. switch sender.state {
  37.  
  38. case .began:
  39.  
  40. imageViewOrigin = pannedImageView.frame.origin
  41. view.bringSubview(toFront: pannedImageView)
  42.  
  43. case .changed:
  44.  
  45. moveViewWithPan(v: pannedImageView, sender: sender)
  46.  
  47. case .ended:
  48. if pannedImageView.frame.intersects(target1.frame) && target1flg == true {
  49. snapView(v: pannedImageView, targetBox: target1)
  50. target1flg = false
  51.  
  52. }
  53. else if pannedImageView.frame.intersects(target2.frame) && target2flg == true {
  54. snapView(v: pannedImageView, targetBox: target2)
  55. target2flg = false
  56.  
  57. }
  58. else {
  59. returnViewToOrigin(v: pannedImageView, loc: imageViewOrigin)
  60. }
  61.  
  62. default:
  63. break
  64. }
  65. }
  66.  
  67.  
  68. func moveViewWithPan(v: UIView, sender: UIPanGestureRecognizer) {
  69.  
  70. let translation = sender.translation(in: view)
  71.  
  72. v.center = CGPoint(x: v.center.x + translation.x, y: v.center.y + translation.y)
  73. sender.setTranslation(CGPoint.zero, in: view)
  74. }
  75.  
  76.  
  77. func returnViewToOrigin(v: UIView, loc: CGPoint) {
  78.  
  79. UIView.animate(withDuration: 0.3, animations: {
  80. v.frame.origin = loc
  81. })
  82. }
  83.  
  84. func snapView(v:UIView, targetBox:UIImageView){
  85. UIView.animate(withDuration: 0.3) {
  86.  
  87. v.center = CGPoint(x:targetBox.center.x, y: targetBox.center.y)
  88. v.isUserInteractionEnabled = false
  89. }
  90. }
  91. }
Add Comment
Please, Sign In to add comment