俺の備忘録

趣味でITエンジニアをやってるものです

<Swift> UIImageViewをドラッグしてみた

環境

まずはデリゲートの宣言と動かすUIImageViewの作成

class playViewController: UIViewController, UIGestureRecognizerDelegate {
       @IBOutlet var moveImage: UIImageView!

       override func viewDidLoad() {
        super.viewDidLoad()

        myImg.frame = CGRectMake(120, 135, 80, 80)
        whiteImg.image = UIImage(named: "sample.png")
        //UIImageViewの移動を許可
        myImg.userInteractionEnabled = true
        myImg.addSubview(self.view)
        
        let pan: UIGestureRecognizer = UIPanGestureRecognizer.init(target: self, action: "panAction:")
        myImg.addGestureRecognizer(pan)
    }
}

続いてドラッグ中の処理を記述

func panAction(sender: UIPanGestureRecognizer) {
        //移動した位置の座標を取得
        let point: CGPoint = sender.translationInView(self.view)
        //移動した座標のx,y座標を中心にする
        let movePoint = CGPointMake(productImg.center.x + point.x, productImg.center.y + point.y)
        productImg.center = movePoint
        print(movePoint)
        //移動距離の初期化
        sender.setTranslation(CGPointZero, inView: self.view)
        if sender.state == UIGestureRecognizerState.Ended {
            print("移動終了")
        }
    }

これで終わりです。
おそらく動くと思います。