UIDynamic

2024-01-16 22:32
文章标签 uidynamic

本文主要是介绍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];

}


这篇关于UIDynamic的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/614111

相关文章

【UIDynamic-动力学-UISnapBehavior-甩行为 Objective-C语言】

一、接下来,我们来说这个甩行为啊,碰撞就说这么多, 1.甩行为,就是说,我现在点击屏幕的某一个点,它甩到某一个地方去, 就是要做这么一个功能啊, 首先呢,我新建一个项目,Name:08-甩行为 首先呢,还是一段儿简单的代码,把之前的红色View拿过来, (100,100), 然后呢,这块儿来一个xWeak, 来一个UIView,再来一个redView, 好,

【UIDynamic-动力学-简介 Objective-C语言】

一、接下来,我们来说这个UIDynamic, 1.来看一下我们这个ppt, 首先啊,看一下, Dynamic,翻译过来,有叫做UIKit动力学的,还有叫物理仿真的,Dynamic,它最大的特点,就是将现实世界的这个动力驱动的这个动画,引入到UIKit来,比如说,重力、铰链连接,实际上,就是附着行为,然后呢,这个碰撞、悬挂、等等的一些个效果,将2D的物理引擎啊,引入了UIKit,