Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift中连接两个可拖动视图_Ios_Swift - Fatal编程技术网

Ios 如何在swift中连接两个可拖动视图

Ios 如何在swift中连接两个可拖动视图,ios,swift,Ios,Swift,我想创造一个类似益智游戏的游戏。屏幕上有几个可拖动的对象,用户可以将它们连接在一起。当用户将两个对象彼此靠近地拖动,并且当用户松开手指时,这两个对象将连接在一起时,我可以使用什么方法。下面是我用来制作两个标签并使其可拖动的代码(我知道为每个标签制作函数非常愚蠢,但现在我只想知道两个对象的组合是如何工作的) 谢谢你的帮助 不能“连接”两个视图-它会忽略视图和视图层次结构的工作方式 但你可以让它“看起来像连接”。不过,事情很快就会变得复杂起来。在您的简单示例中,一种方法是在拼图板上有三个子视图:两

我想创造一个类似益智游戏的游戏。屏幕上有几个可拖动的对象,用户可以将它们连接在一起。当用户将两个对象彼此靠近地拖动,并且当用户松开手指时,这两个对象将连接在一起时,我可以使用什么方法。下面是我用来制作两个标签并使其可拖动的代码(我知道为每个标签制作函数非常愚蠢,但现在我只想知道两个对象的组合是如何工作的)

谢谢你的帮助

不能“连接”两个视图-它会忽略视图和视图层次结构的工作方式

  • 但你可以让它“看起来像连接”。不过,事情很快就会变得复杂起来。在您的简单示例中,一种方法是在拼图板上有三个子视图:两个可见(“str”和“ing”),一个不可见(“string”)。连接后,隐藏“str”和“ing”并显示“string”子视图。可能会播放一些引人注目的动画,让它看起来真的像是在连接

  • 另一个想法(取决于谜题的类型)是让它成为旧的“专注”游戏的变体。在那里,最后的拼图板隐藏在各种编号的方块后面。在你的游戏中,你可能会让“碎片”有一个特定的位置,它们需要移动到(成对?),当用户这样做时,你-再次-让它看起来像是连接的,可能需要一些动画

如果我不在这里,而且有人真的有办法将两个UIView“连接”成一个UIView,我会很高兴地删除我的答案(并投票支持该答案)

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)



}