2015-10-29 2 views
0

Swift 2.0, Xcode 7, Ios 9Swift Столкновение Boundary не работает

Намерение: Я хочу, чтобы два квадрата, чтобы упасть на дно и остаться в нижней части экрана.

Что происходит сейчас: нет ошибки, препятствующей запуску кода, гравитация отлично работает, но столкновение просто игнорируется. Это приводит к тому, что два объекта попадают в нижнюю часть экрана.

Примечание: подкласс UIView не является UIViewController, и к этому представлению можно получить доступ с одного сеанса.

Большое спасибо!

Код:

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) 

    } 
} 

ответ

0

Я установил ее, изменив подкласс 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) 
    } 

} 
Смежные вопросы