ドラッグ可能なラベルをたくさん用意し、これを実現するために次のコードを書いています。しかし、これはそれを行うにはかなり愚かな方法です...私はすべてのオブジェクトの関数を書くので。ただ1つの関数を使って同じ効果を達成できる方法はありますか?複数のドラッグ可能なビューをプログラムで作成する最善の方法はありますか?
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel(frame: CGRectMake(UIScreen.mainScreen().bounds.width/2 - 100, UIScreen.mainScreen().bounds.height/2 - 100, 100, 50))
let label2 = UILabel(frame: CGRectMake(UIScreen.mainScreen().bounds.width/2 - 100, UIScreen.mainScreen().bounds.height/2 - 200, 100, 50))
label.text = "Str"
label.textAlignment = NSTextAlignment.Center
label.backgroundColor = UIColor.greenColor()
self.view.addSubview(label)
label2.text = "ing"
label2.textAlignment = NSTextAlignment.Center
label2.backgroundColor = UIColor.greenColor()
self.view.addSubview(label2)
let gesture = UIPanGestureRecognizer(target: self, action: Selector("wasDragged:"))
label.addGestureRecognizer(gesture)
label.userInteractionEnabled = true
let gesture2 = UIPanGestureRecognizer(target: self, action: Selector("wasDragged1:"))
label2.addGestureRecognizer(gesture2)
label2.userInteractionEnabled = true
}
func wasDragged(gesture: UIPanGestureRecognizer) {
let translation = gesture.translationInView(self.view)
if let label = gesture.view {
label.center = CGPoint(x: label.center.x + translation.x, y: label.center.y + translation.y)
}
gesture.setTranslation(CGPointZero, inView: self.view)
}
func wasDragged1(gesture:UIPanGestureRecognizer) {
let translation = gesture.translationInView(self.view)
if let label = gesture.view {
label.center = CGPoint(x: label.center.x + translation.x, y: label.center.y + translation.y)
}
gesture.setTranslation(CGPointZero, inView: self.view)
}
UILabelをサブクラス化し、そのジェスチャーを行います。 –