Swift 2. UILabel对象之间的碰撞不起作用

时间:2015-12-27 16:54:53

标签: ios swift uilabel swift2 collision

我正在使用Swift 2和iOS 9.当我在posts中输入内容并按下加号按钮时,气泡应该会随着输入的文本内部而下降。我正在使用textInputField。到目前为止,一切都有效,包括重力,弹性和碰撞等行为。

问题:

气泡之间不会相互碰撞。他们总是互相厮杀。

非常感谢你!

代码:

UILabel

来自泡泡的代码:

var tags = [String]()
var bubbles = [Bubble]()


@IBAction func addTag(sender: AnyObject) {

    let xPosition : CGFloat = CGFloat( arc4random_uniform(200))+20
    var input = inputText.text

    if (input?.characters.count < 3) {

        let alert = UIAlertView(title: "Achtung", message: "Dein Tag muss mindestens Zeichen lang sein.", delegate: self, cancelButtonTitle: "OK")

        alert.show()

    } else {

        let tag = Bubble()
        tag.bubble(input!)
        tag.animator = UIDynamicAnimator(referenceView: view)
        tag.label.text =  input
        view.addSubview(tag.label)
        tag.gravity()


        tags.append(input!)
        bubbles.append(tag)
        inputText.text = ""


        print("\(tags)")



    }

1 个答案:

答案 0 :(得分:1)

来自the UICollisionBehavior docs

  

碰撞行为赋予指定的动态项目数组,这些项目彼此之间以及与行为的指定边界进行碰撞的能力。

  

碰撞行为的项目可能会相互冲突以及您为行为指定的任何边界。

但是,您只需指定一个项目:

let collision = UICollisionBehavior(items: [label])

label不会与其他对象发生碰撞...因为您没有指定任何其他对象与之碰撞。

您需要使用所有应该碰撞的项目添加碰撞行为对象

UICollisionBehavior(items: [label, label2, label3])

当您引用所有“气泡”(可能在bubbles.append(tag)附近)时,您需要更进一步。