\
2014年11月19日
Posted by 屋台ブルー at 2014年11月19日00:00 Comment(0)

Swiftで遊ぼう! - 131 - UIDynamicAnimator/collisionインタラクション色々

Swiftで遊ぼう! - 131 - UIDynamicAnimator/collisionインタラクション色々UICollisionBehaviorクラスにも数多くのプロパティやメソッドが用意されている。iOSフレームワークを勉強するのが大変なのは覚えることが多すぎるからだ。

UIDynamicBehaviorの1つ、UICollisionBehaviorクラスにも知らないプロパティやメソッドが色々ある。

また昨日紹介したコードの話をしよう(毎日ちょっとずつしか勉強していないんで、同じ内容を数日続けてるので)。青い正方形が重力に従って落下する途中に黄色い長方形にぶつかる(Collision!)と、その落下速度に影響して2つのオブジェクトが一緒に落下していく。

これじゃ、黄色い長方形にbarrier(バリア)と名付けた意味がないですよね。黄色い長方形は青い正方形と衝突しても影響をうけないようにするにはどうすればいいか?

答えは、黄色い長方形の輪郭に合わせて透明の境界線を引いてやるんですよ。

collision.translatesReferenceBoundsIntoBoundary = true

このコードを覚えているかな。このプロパティを「true」にしてやると、リファレンスビュー(referennce view)、これは画面の輪郭になるけど、これが境界線になる。ここに黄色い長方形の輪郭を境界線として加えてやるメソッドを使うんです。

collision.addBoundaryWithIdentifier("barrier", forPath: UIBezierPath(rect: barrier.frame))

これも覚えなければならないメソッドの作法だ。こういうメソッドが多数あるんで、どういう時にどういうメソッドを使ったらいいのか勉強するために、他人のコードを読むことが重要になりますね。覚えるより慣れろってところか。

じゃあViewController.swiftのコードを紹介しよう。

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.addBoundaryWithIdentifier("barrier", forPath: UIBezierPath(rect: barrier.frame))
collision.translatesReferenceBoundsIntoBoundary = true
animator.addBehavior(collision)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

このコードないで記述しているオブジェクトの腱錬成をダイアグラムで説明すると下のようになる。

Swiftで遊ぼう! - 131 - UIDynamicAnimator/collisionインタラクション色々


これをiOSシュミレーターで実行すると黄色い長方形は動かず、青し正方形は落下中に黄色い長方形に当たって落下の軌跡が変わる。
Swiftで遊ぼう! - 131 - UIDynamicAnimator/collisionインタラクション色々


今日はここまで。


同じカテゴリー(Swiftで遊ぼう!)の記事画像
Swiftで遊ぼう! - プログラミングまとめ(ときどき更新)
Swiftで遊ぼう! - 番外編 - Xcode6:ショートカットと用語説明
Swiftで遊ぼう! - 209 - ルートビューのコードは続く:CGRect
Swiftで遊ぼう! - 208 - ルートビューのコード
Swiftで遊ぼう! - 207 - ツールバーボタンとビューコントローラーを繋ぐ
Swiftで遊ぼう! - 206 - ビューコントローラーにビューコントローラーを載せる
同じカテゴリー(Swiftで遊ぼう!)の記事
 Swiftで遊ぼう! - プログラミングまとめ(ときどき更新) (2021-01-31 00:00)
 Swiftで遊ぼう! - 番外編 - Xcode6:ショートカットと用語説明 (2015-04-05 00:00)
 Swiftで遊ぼう! - 209 - ルートビューのコードは続く:CGRect (2015-02-06 00:00)
 Swiftで遊ぼう! - 208 - ルートビューのコード (2015-02-05 00:00)
 Swiftで遊ぼう! - 207 - ツールバーボタンとビューコントローラーを繋ぐ (2015-02-04 00:00)
 Swiftで遊ぼう! - 206 - ビューコントローラーにビューコントローラーを載せる (2015-02-03 00:00)

上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

削除
Swiftで遊ぼう! - 131 - UIDynamicAnimator/collisionインタラクション色々
    コメント(0)