Ios 如何在swift中连接两个可拖动视图
我想创造一个类似益智游戏的游戏。屏幕上有几个可拖动的对象,用户可以将它们连接在一起。当用户将两个对象彼此靠近地拖动,并且当用户松开手指时,这两个对象将连接在一起时,我可以使用什么方法。下面是我用来制作两个标签并使其可拖动的代码(我知道为每个标签制作函数非常愚蠢,但现在我只想知道两个对象的组合是如何工作的) 谢谢你的帮助 不能“连接”两个视图-它会忽略视图和视图层次结构的工作方式Ios 如何在swift中连接两个可拖动视图,ios,swift,Ios,Swift,我想创造一个类似益智游戏的游戏。屏幕上有几个可拖动的对象,用户可以将它们连接在一起。当用户将两个对象彼此靠近地拖动,并且当用户松开手指时,这两个对象将连接在一起时,我可以使用什么方法。下面是我用来制作两个标签并使其可拖动的代码(我知道为每个标签制作函数非常愚蠢,但现在我只想知道两个对象的组合是如何工作的) 谢谢你的帮助 不能“连接”两个视图-它会忽略视图和视图层次结构的工作方式 但你可以让它“看起来像连接”。不过,事情很快就会变得复杂起来。在您的简单示例中,一种方法是在拼图板上有三个子视图:两
- 但你可以让它“看起来像连接”。不过,事情很快就会变得复杂起来。在您的简单示例中,一种方法是在拼图板上有三个子视图:两个可见(“str”和“ing”),一个不可见(“string”)。连接后,隐藏“str”和“ing”并显示“string”子视图。可能会播放一些引人注目的动画,让它看起来真的像是在连接
- 另一个想法(取决于谜题的类型)是让它成为旧的“专注”游戏的变体。在那里,最后的拼图板隐藏在各种编号的方块后面。在你的游戏中,你可能会让“碎片”有一个特定的位置,它们需要移动到(成对?),当用户这样做时,你-再次-让它看起来像是连接的,可能需要一些动画
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)
}