第六课——UIDynamicAnimator

今天我们要学习UIDynamicAnimator 仿真物理学 。

UIKit 力学(Dynamics) 和动态效果(Motion Effects) 。
创建力学基本流程:
  1. 创建运动管理
  2. 创建运动行为(如gravity、collision),运动行为添加运动物体:即需要指定具体物体(具体物体,具体行为)
  3. 当需要使用运动物体的某种行为,就用运动管理添加运动行为
  4. 一般还要注意remove
完整代码:

import UIKit

 

class ViewController: UIViewController {

 

    var animator: UIDynamicAnimator?

    

    override func viewDidLoad() {

        super.viewDidLoad()

        //下落的方块

        let square = UIView(frame: CGRect(x: 120, y: 50, width: 80, height: 80))

        square.backgroundColor = UIColor.cyan

        self.view.addSubview(square)

        //边界:栏杆

        let barrier = UIView(frame: CGRect(x: 0, y: 350, width: 140, height: 25))

        barrier.backgroundColor = UIColor.red

        self.view.addSubview(barrier)

        

        

        //创建运动管理

        animator = UIDynamicAnimator(referenceView: self.view)

        //创建运动行为:gravity、collision——>需要指定具体物体(具体物体,具体行为)

        let gravity = UIGravityBehavior(items: [square])

        let collision = UICollisionBehavior(items: [square])

        let elastic = UIDynamicItemBehavior(items: [square])

        //添加边界(不可见)——而不是barrier(它只是给人以视觉上的边界)

        let right = CGPoint(x: barrier.frame.origin.x + barrier.frame.size.width, y: barrier.frame.origin.y)    //而left是barrier.frame.orign,这两个都是CGPoint,就只有x和y属性

        //将参考视图(父视图)的边界作为碰撞边界

        collision.translatesReferenceBoundsIntoBoundary = true

        //将barrier作为碰撞边界

        collision.addBoundary(withIdentifier: "aa" as NSCopying, from: barrier.frame.origin, to: right)

        //实现弹性效果

        elastic.elasticity = 1.12

        

        

        animator?.addBehavior(gravity)

        animator?.addBehavior(collision)

        animator?.addBehavior(elastic)

    }

  

}

转载于:https://www.cnblogs.com/quanxi/p/6115331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值