2014年11月17日
Posted by 屋台ブルー at
2014年11月17日00:00 Comment(0)
Swiftで遊ぼう! - 129 - UIDynamicAnimator/collisionインタラクション無し
オブジェクトに重力を加え、境界線で止まるとこまで勉強しました。じゃあ次は、2つのオブジェクトの接触に関してみていこう。青い正方形と黄色い長方形の初期値の位置関係をみてみよう。以下のコードで書くと...
import UIKit
class ViewController: UIViewController {
var animator: UIDynamicAnimator!
var gravity: UIGravityBehavior!
var collision: UICollisionBehavior!
override func viewDidLoad() {
super.viewDidLoad()
// これは青い正方形のオブジェクト
let square = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
square.backgroundColor = UIColor.blueColor()
view.addSubview(square)
// そして付け加えられた黄色い長方形のオブジェクト
let barrier = UIView(frame: CGRect(x: 0, y: 300, width: 130, height: 20))
barrier.backgroundColor = UIColor.yellowColor()
view.addSubview(barrier)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
上のコードは図形を表示させるだけ。位置関係はこんな位置にあるのが、以下のコードを付け加えて重力を加える。
import UIKit
class ViewController: UIViewController {
var animator: UIDynamicAnimator!
var gravity: UIGravityBehavior!
var collision: UICollisionBehavior!
override func viewDidLoad() {
super.viewDidLoad()
let square = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
square.backgroundColor = UIColor.blueColor()
view.addSubview(square)
let barrier = UIView(frame: CGRect(x: 0, y: 300, width: 130, height: 20))
barrier.backgroundColor = UIColor.yellowColor()
view.addSubview(barrier)
// 青い正方形に重力を加える。
animator = UIDynamicAnimator(referenceView: view)
gravity = UIGravityBehavior(items: [square])
animator.addBehavior(gravity)
// 青い正方形にはまだ画面の境界しか理解できていないので黄色い長方形とのインタラクションは無い。
collision = UICollisionBehavior(items: [square])
collision.translatesReferenceBoundsIntoBoundary = true
animator.addBehavior(collision)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
上のように青い正方形にだけ重力がかかっても黄色い長方形との相互作用はないので、青い正方形は黄色い長方形を素通りして下に落ちていく。
今日はここまで。
import UIKit
class ViewController: UIViewController {
var animator: UIDynamicAnimator!
var gravity: UIGravityBehavior!
var collision: UICollisionBehavior!
override func viewDidLoad() {
super.viewDidLoad()
// これは青い正方形のオブジェクト
let square = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
square.backgroundColor = UIColor.blueColor()
view.addSubview(square)
// そして付け加えられた黄色い長方形のオブジェクト
let barrier = UIView(frame: CGRect(x: 0, y: 300, width: 130, height: 20))
barrier.backgroundColor = UIColor.yellowColor()
view.addSubview(barrier)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
上のコードは図形を表示させるだけ。位置関係はこんな位置にあるのが、以下のコードを付け加えて重力を加える。
import UIKit
class ViewController: UIViewController {
var animator: UIDynamicAnimator!
var gravity: UIGravityBehavior!
var collision: UICollisionBehavior!
override func viewDidLoad() {
super.viewDidLoad()
let square = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
square.backgroundColor = UIColor.blueColor()
view.addSubview(square)
let barrier = UIView(frame: CGRect(x: 0, y: 300, width: 130, height: 20))
barrier.backgroundColor = UIColor.yellowColor()
view.addSubview(barrier)
// 青い正方形に重力を加える。
animator = UIDynamicAnimator(referenceView: view)
gravity = UIGravityBehavior(items: [square])
animator.addBehavior(gravity)
// 青い正方形にはまだ画面の境界しか理解できていないので黄色い長方形とのインタラクションは無い。
collision = UICollisionBehavior(items: [square])
collision.translatesReferenceBoundsIntoBoundary = true
animator.addBehavior(collision)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
上のように青い正方形にだけ重力がかかっても黄色い長方形との相互作用はないので、青い正方形は黄色い長方形を素通りして下に落ちていく。
今日はここまで。