2014年11月15日
Posted by 屋台ブルー at
2014年11月15日00:00 Comment(0)
Swiftで遊ぼう! - 127 - UIKit UIDynamicAnimator/gravity2
UIDynamicAnimatorクラスは、UIKitの物理学エンジンという説明があるが、正確に言うと、物理学エンジン、これは一連のBehaviorクラスのことだろう。ということは以下のクラスじゃないかな。
UIAttachmentBehavior
UICollisionBehavior
UIDynamicItemBehavior
UIGravityBehavior
UIPushBehavior
UISnapBehavior
まず物理学エンジンというのをクラスでどのように表現するのか理解しておく必要がある。UIViewアイテムの(物理学的)動きの軌跡は、位置情報としてアレー型で保持することになる。そしてこれは、あくまでも位置情報なので、このインスタンスを前述のUIDynamicAnimatorのリファレンスviewに提供することで、動きがアニメーションされて画面に描出されるってとこですね。
当然のように、物理学エンジンのBehaviorクラスには、数々のプロパティが用意されていて、角度(angle)とか強さ(magnitude)を変化させられる。
昨日の内容を以下のようにしてやると、squareオブジェクトが右方向に超高速に飛んでいきます(笑)
import UIKit
class ViewController: UIViewController {
var animator: UIDynamicAnimator!
var gravity: UIGravityBehavior!
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)
animator = UIDynamicAnimator(referenceView: view)
gravity = UIGravityBehavior(items: [square])
gravity.angle = 0.0
gravity.magnitude = 12.0
animator.addBehavior(gravity)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
このangleプロパティだけど、何も考えずに「0.0」を入れると右方向に飛んでいく。しかし、「90.0」を入れると左下に飛んでいく? 角度の単位は何だろう? まだ調べていないので良くわかっていない....(^_^;)
今日はここまで。
UIAttachmentBehavior
UICollisionBehavior
UIDynamicItemBehavior
UIGravityBehavior
UIPushBehavior
UISnapBehavior
まず物理学エンジンというのをクラスでどのように表現するのか理解しておく必要がある。UIViewアイテムの(物理学的)動きの軌跡は、位置情報としてアレー型で保持することになる。そしてこれは、あくまでも位置情報なので、このインスタンスを前述のUIDynamicAnimatorのリファレンスviewに提供することで、動きがアニメーションされて画面に描出されるってとこですね。
当然のように、物理学エンジンのBehaviorクラスには、数々のプロパティが用意されていて、角度(angle)とか強さ(magnitude)を変化させられる。
昨日の内容を以下のようにしてやると、squareオブジェクトが右方向に超高速に飛んでいきます(笑)
import UIKit
class ViewController: UIViewController {
var animator: UIDynamicAnimator!
var gravity: UIGravityBehavior!
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)
animator = UIDynamicAnimator(referenceView: view)
gravity = UIGravityBehavior(items: [square])
gravity.angle = 0.0
gravity.magnitude = 12.0
animator.addBehavior(gravity)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
このangleプロパティだけど、何も考えずに「0.0」を入れると右方向に飛んでいく。しかし、「90.0」を入れると左下に飛んでいく? 角度の単位は何だろう? まだ調べていないので良くわかっていない....(^_^;)
今日はここまで。