簡體   English   中英

迅捷碰撞邊界不起作用

[英]Swift Collision Boundary not working

Swift 2.0,xcode 7,iOS 9

意圖:我希望這兩個正方形下降到底部並保持在屏幕底部。

現在發生的事情:沒有錯誤阻止代碼運行,重力正常運行,但是碰撞似乎只是被忽略了。 從而導致兩個對象從屏幕底部掉落。

注意:子類是UIView而不是UIViewController,並且可以從segue訪問此視圖。

非常感謝!

代碼:

import UIKit

class graphs: UIView {

//create two shapes
var greenSquare: UIView?
var redSquare: UIView?
var animator: UIDynamicAnimator?

override func drawRect(rect: CGRect) {

    var dimen = CGRectMake(25, 25, 60, 60)
    greenSquare = UIView(frame: dimen)
    greenSquare?.backgroundColor = UIColor.greenColor()

    dimen = CGRectMake(130, 25, 90, 90)
    redSquare = UIView(frame: dimen)
    redSquare?.backgroundColor = UIColor.redColor()

    //add them to the screen
    self.addSubview(greenSquare!)
    self.addSubview(redSquare!)

}

@IBAction func startbutton(sender: AnyObject) {
     //initialise the animator
    animator = UIDynamicAnimator()

    //colision
    let boundries = UICollisionBehavior(items:[greenSquare!,redSquare!])
    boundries.translatesReferenceBoundsIntoBoundary = true

    //add gravity
    let gravity = UIGravityBehavior(items: [greenSquare!, redSquare!])
    let direction = CGVectorMake(0.0, 1.0)
    gravity.gravityDirection = direction

    animator?.addBehavior(boundries)
    animator?.addBehavior(gravity)

   }
}

我通過將子類更改為UIViewController進行了修復

為什么以前的代碼不起作用?

這是新的代碼:

import UIKit

class DrawView: UIViewController {

//Create two shapes
var greenSquare: UIView?
var redSquare: UIView?
var animator: UIDynamicAnimator?

override func viewDidLoad() {
    super.viewDidLoad()

}


@IBAction func startbutton(sender: UIButton) {

    //Create the shapes
    var dimen = CGRectMake(25, 25, 60, 60)
    greenSquare = UIView(frame: dimen)
    greenSquare?.backgroundColor = UIColor.greenColor()

    dimen = CGRectMake(130, 25, 90, 90)
    redSquare = UIView(frame: dimen)
    redSquare?.backgroundColor = UIColor.redColor()

    //Add them to the screen
    self.view.addSubview(greenSquare!)
    self.view.addSubview(redSquare!)

    //Initialize the animator
    animator = UIDynamicAnimator(referenceView: self.view)

    //Gravity
    let gravity = UIGravityBehavior(items: [greenSquare!, redSquare!] )
    let direction = CGVectorMake(0.0, 1.0)
    gravity.gravityDirection = direction

    //Collision
    let boundries = UICollisionBehavior(items: [greenSquare!, redSquare!] )
    boundries.translatesReferenceBoundsIntoBoundary = true

    //Elasticity
    let bounce = UIDynamicItemBehavior(items: [greenSquare!, redSquare!] )
    bounce.elasticity = 0.5

    animator?.addBehavior(bounce)
    animator?.addBehavior(boundries)
    animator?.addBehavior(gravity)
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM