iOS-UIDynamic物理仿真-捕捉-UISnapBehavior

捕捉-UISnapBehavior

今天我们来讲物理仿真的另一种行为捕捉行为,不多说先上图
这里写图片描述
套路和之前物理仿真重力/碰撞的实现是一致的
首先在storyboard拖取一个View,设置一下frame属性,当然偏好纯代码的同学也可也在viewDidload方法中手动创建

@property (weak, nonatomic) IBOutlet UIView *testView;

设置一下控件的圆角,其次给控制器的View添加UITapGestureRecognizer手势对象(点击手势)

self.testView.layer.cornerRadius = 25;

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewDidTapGesture:)];

    [self.view addGestureRecognizer:tapGesture];

在viewDidTapGesture:方法中实现点击手势之后的具体操作(捕捉仿真动画)

- (void)viewDidTapGesture:(UITapGestureRecognizer *)tapGesture {
    //获取手指当前的触摸点
    CGPoint currentTapPoint = [tapGesture locationInView:self.view];

    //创建物理仿真器
    self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];

    //创建物理仿真行为
    UISnapBehavior *snap = [[UISnapBehavior alloc] initWithItem:self.testView snapToPoint:currentTapPoint];

    //设置属性
    // snapPoint                                                                捕获的点
    // damping; // damping value from 0.0 to 1.0. 0.0 is the least oscillation. 阻尼系数
    snap.damping = 0.2;

    //添加行为
    [self.animator addBehavior:snap];

    //改变控件的颜色
    self.testView.backgroundColor = [self randomColor];

}
//产生随机色的方法
- (UIColor *)randomColor {
    CGFloat red = arc4random() % 256;
    CGFloat green = arc4random() % 256;
    CGFloat blue = arc4random() % 256;

    return [UIColor colorWithRed:red / 255.0 green:green / 255.0 blue:blue / 255.0 alpha:1];
}

最后贴一下源码地址物理仿真

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值