Guest User

Untitled

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