マルチタッチイベント パン・回転
ユーザが画面タッチすると、マルチタッチイベントが発生して、「指が画面に触れている」「指が動いた」「指が画面から離された」「何本の指で同時にタッチしているか」ということを認識できるようになります。通常、アプリを作成する上で必ず制御しなければならないイベントとなっています。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var ivTarget: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 背景に画像をセットする
let image:UIImage = UIImage(named:"bg01")!
// 背景に画像をセットする
self.view.backgroundColor = UIColor(patternImage:image)
// タッチ / キーイベント許可設定 YES
self.ivTarget.userInteractionEnabled = true
// アニメーション開始
animateStart(target: ivTarget, key: "Ani01")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Original Method
// アニメーション回転開始
func animateStart(#target: UIView, key: String!) {
// アニメーション設定
// (種類(Z軸回転))
let ani:CABasicAnimation = CABasicAnimation(keyPath:"transform.rotation.z")
// 設定(変化値(ラジアン角))
ani.fromValue = 0.0 // 0°
ani.toValue = 2.0 * M_PI // 360°
// (アニメーション時間(秒))
ani.duration = 2.0;
// (繰返し回数)
ani.repeatCount = HUGE // 無限
// アニメーション開始
target.layer.addAnimation(ani, forKey: key)
}
// MARK: - Action Method
// ターゲットの移動(パンジェスチャー)
@IBAction func panTarget(sender: UIPanGestureRecognizer) {
// 移動処理
sender.view!.center = sender.locationInView(view.superview)
}
// アニメーション停止
func animateEnd(#target: UIView, key: String!) {
// アニメーション削除
target.layer.removeAnimationForKey(key)
}
}
ポイント
#target
第1引数にも外部名をつけたい場合は、関数の場合と同様、明示的に書くか、内部名の前に#をつけます。
// アニメーション回転開始
func animateStart(#target: UIView, key: String!) {
........
}
GitHub GestureSwift
▫️参考ページ
iOSの中でドラッグ可能のUIViewをするUIPanGestureRecognizer 8 スウィフト
XcodeのStoryboardでGesture Recognizerを使う方法
【iOS Swift アニメーション入門 #6】アニメーション終了時に処理を実行する(コールバック)
タッチで画像を動かして、ある特定範囲にきたら画像を吸着させる。
【iOS Swift アニメーション入門 #1】Core AnimationでView(のLayer)を移動するアニメーション
コメントをお書きください