Swift - パンで指についてくるビューをつくる
案外、パン(PCでいうドラッグ)でViewがついてくるような処理の書き方を思い出せなかったので、
備忘録的にメモ。
import UIKit class ViewController: UIViewController, UIGestureRecognizerDelegate { var myView: UIView! var myView2: UIView! override func viewDidLoad() { super.viewDidLoad() myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) myView.backgroundColor = UIColor.blackColor() myView.center = view.center view.addSubview(myView) addGestureRecognizer(myView) myView2 = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200)) myView2.backgroundColor = UIColor.redColor() myView2.center = view.center view.addSubview(myView2) addGestureRecognizer(myView2) } func addGestureRecognizer(target: UIView) { let panGestureRec = UIPanGestureRecognizer(target: self, action: #selector(self.panGestureReceived(_:))) target.addGestureRecognizer(panGestureRec) } func panGestureReceived(sender: UIPanGestureRecognizer) { guard let target = sender.view else { return } // translationInViewが返す値は、パンが始まってからの蓄積された値となる let p = sender.translationInView(self.view) // 移動先座標 let moved = CGPoint(x: target.center.x + p.x, y: target.center.y + p.y) target.center = moved // リセット sender.setTranslation(CGPoint.zero, inView: self.view) } }