iOS重力行为、碰撞行为和吸附(Swift)

本文介绍了如何在iOS应用中使用Swift实现重力、碰撞和吸附动画。通过创建视图,设置加速度,添加重力行为和碰撞行为,实现代理方法监听碰撞过程,调整视图物理属性以增加真实感。同时,还展示了如何为视图添加吸附行为,提供了一个完整的demo代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iOS有模仿物理环境的动态动画,今天就简单的给视图添加重力效果和碰撞效果

首先使用一个参考视图也可以理解为背景视图创建自动动画:

dynamicAnimator = UIDynamicAnimator(referenceView: self.view)

并且我们创建两个一大一小的视图:

        litterView = createGlobe(CGRectMake(145, 20, 50, 50), color: UIColor.yellowColor())
        hugeView = createGlobe(CGRectMake(120, 300, 100, 100), color: UIColor.redColor())
        self.view.addSubview(litterView!)
        self.view.addSubview(hugeView!)


 func createGlobe(frame:CGRect,color:UIColor) -> UIView{
        let view = UIView (frame: frame)
        view.backgroundColor = color
        view.layer.borderColor = UIColor.greenColor().CGColor
        view.layer.cornerRadius = frame.size.width/2
        view.layer.masksToBounds = true
        view.layer.borderWidth = 2
        return view
    }

然后我们给小的视图添加重力行为并设置加速度:

        //重力行为
        let gravite = UIGravityBehavior(items: [litterView!])
        //加速度
        gravite.magnitude = 5

给大视图和小视图都添加碰撞行为

        //碰撞行为
        let collisionBehavior = UICollisionBehavior(items: [litterView!,hugeView!])
        //用参考视图边界作为碰撞边界
        collisionBehavior.translatesReferenceBoundsIntoBoundary = true
        collisionBehavior.collisionDelegate = self

碰撞行为是有代理方法的,我们可以通过实现代理方法监听碰撞过程:
两个视图碰撞结束:

 func collisionBehavior(behavior: UICol
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值