Comment使用環境Xcode:8.0Swift:3.0UIViewをタッチして移動させてみよう。完成イメージは以下の通りである。※クリックでGIFアニメーションを表示UIViewControllerが用意したデフォルトのUIViewにサブビューを追加し、赤いビューと青いビューをタッチして動かせるようになっている。Application」テンプレートで新しいプロジェクトを作成する。実装プロジェクト内にあるViewController.swiftに処理を書いていく。}}アプリ起動時にまず呼ばれるのは、38行目からのviewDidLoadである。ここでは背景色が赤と青のビューを一つずつ作成し、親にサブビューとして追加している。これらのビューでタッチイベントを受けられるようにするため、UIGestureRecognizerの一種であるUIPanGestureRecognizerをサブビューに追加する。これはパンジェスチャ、すなわちタッチ後にドラッグするような操作を認識するためのRecognizerである。ここで注意が必要なのはGestureRecognizerのインスタンスは複数のUIViewで使い回せない、ということである。下のようについ書きたくなるのだが、このように書くとタッチが有効になるのは最後に追加したViewの方のみとなってしまう。UIView()view2.addGestureRecognizer(recognizer)タッチ時の処理を扱うのは20行目からのhandlePanGestureメソッドである。ここで行っているのは以下の処理である。タッチ開始時:タッチされたビューの位置(origin)と親ビュー上のタッチ位置を記録しておく。タッチ移動時:タッチ開始時点のビューの位置(origin)に、タッチ開始点から現在のタッチまでの移動量を足してビューの新しい位置(origin)とする。タッチの移動量は「現在の親ビューにおけるタッチ位置」-「タッチ開始時点の親ビューにおける位置」で求めることができる。サブビューの位置はタッチの移動によってどんどん変わっていくから、計算には親ビュー上のタッチ位置の値を使うことがポイントである。31行目でCGPointに対して+や-の演算子を使っている。本来はCGPointにこのような演算子はないのだが、4行目、6行目でユーティリティメソッドを用意しているのでこのように書くことができる。これは、ソースコードを見やすくするための工夫である。普通に書くならば以下のようになるだろう。))CGPointのユーティリティメソッドについて、さらに詳しく知りたいときは以下の記事が参考になる。http://qiita.com/koher/items/7b4f23d749d973d409c9さて、今回の内容は以前にAndroidでもやったことがある。Androidでの実装に興味がある方は以下の記事も参考にしてほしい。コメントをキャンセルメールアドレスが公開されることはありません。