UIDynamic

一,重力行为

    // 1.创建物理仿真器

    // 并且指定了当前控制器的view作为仿真范围

    //    UIDynamicAnimator *anim = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];

    // 2.创建物理仿真行为

注:以上代码需要写成全局变量,如下:

- (UIDynamicAnimator *)anim{

    if (!_anim) {

        _anim = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];

    }

    return _anim;

}


    // 并且指定红色为作为仿真元素

    UIGravityBehavior *gravityB = [[UIGravityBehavior alloc] initWithItems:@[self.redView]];

    // 设置重力的方向

    //    gravityB.gravityDirection = CGVectorMake(1, 0);

    //    gravityB.gravityDirection = CGVectorMake(0, -1);

    //    gravityB.gravityDirection = CGVectorMake(1, 1);

    // 设置重力的角度

    //    gravityB.angle = M_PI_2;

    // 设置重力的加速度

    gravityB.magnitude = 100.0;

    // 3.将物理仿真行为添加到仿真器中

    [self.anim addBehavior:gravityB];

}


二,碰撞

    // 碰撞

    // 1.创建物理仿真器

    // 2.创建物理仿真行为

    UIGravityBehavior *gravigtyB = [[UIGravityBehavior alloc] initWithItems:@[self.redView]];

    //    gravigtyB.magnitude = 100;

    

    // 创建碰撞仿真行为

    UICollisionBehavior *collisionB = [[UICollisionBehavior alloc] initWithItems:@[self.redView, self.st]];

    // 设置碰撞的边界

    //    collisionB.translatesReferenceBoundsIntoBoundary = YES;

    

    // 添加直线边界

    //    [collisionB addBoundaryWithIdentifier:@"line" fromPoint:CGPointMake(0, 200) toPoint:CGPointMake(320, 420)];

    

    // 添加图形的边界

    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.view.frame];

    [collisionB addBoundaryWithIdentifier:@"abc" forPath:path];

    

    // 3.将物理仿真行为添加到仿真器中

    [self.anim addBehavior:gravigtyB];

    [self.anim addBehavior:collisionB];

}


三,吸附行为

    // 1.获取当前触摸的手指

    UITouch *touch = [touches anyObject];

    // 2.更具手指取出位置

    CGPoint point = [touch locationInView:touch.view];

      // 吸附行为

    // 1.创建物理仿真器

    // 2.创建物理仿真行为

    UISnapBehavior *snapB = [[UISnapBehavior alloc] initWithItem:self.redView snapToPoint:point];

    // 设置吸附行为的"减震"

    snapB.damping = 0;

    // 注意: 吸附行为默认只能吸附一次, 如果多次吸附必须从仿真器中移除再重新添加

    [self.anim removeAllBehaviors];

    // 3.将物理仿真行为添加到仿真器中

    [self.anim addBehavior:snapB];

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值