二、UIDynamic动画
UIDynamic动画是有物理引擎的动画,我们只需要设定这个“物体”的物理特性,iOS就会自动帮我们进行物理世界的动画运算。首先我们创建它的物理特性:
var animator : UIDynamicAnimator?override func viewDidLoad() {
super.viewDidLoad()
animator = UIDynamicAnimator(referenceView: view)}
override func viewDidAppear(animated: Bool) {
let gravity = UIGravityBehavior(items: [marker2])//重力
let elastic = UIDynamicItemBehavior(items: [marker2])//弹性
elastic.elasticity = 0.6 let collision = UICollisionBehavior(items: [marker2])//边缘
let endY = marker2.frame.origin.y + marker2.frame.height//
记录marker2的底部坐标
collision.addBoundaryWithIdentifier("floor", fromPoint: CGPoint(x: 0, y: endY),
toPoint: CGPoint(x: UIScreen.mainScreen().bounds.width, y: endY))//在marker2的底部画一条线,从屏幕左边到屏幕右边
animator!.addBehavior(collision)
animator!.addBehavior(gravity)
animator!.addBehavior(elastic)}
首先我们创建一个animator,然后创建关于marker2的重力、弹性、边缘三个属性,附加在animator上。于是这个marker2便有了物理特性。然后我们和以前一样把它抬高:
UIView.animateWithDuration(0.2,
animations: {
self.marker2.layer.position.y -= 30 },
completion: {(finished : Bool) in
self.animator!.updateItemUsingCurrentState(self.marker2)//如果不update,则animator不知道它的位置被移动过了})
在动画完成后,让animator重新对它进行活动,就达到了文章开始的gif图中,第二个marker的弹跳效果。
文章到此为止,希望对大家有所帮助,谢谢。
注:相关教程知识阅读请移步到swift教程频道。








