Btn移动

1.添加长按手势

 //长按手势

        UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(buttonLongPressed:)];

        [btn addGestureRecognizer:longGesture];

2.判断手势的状态


- (void)buttonLongPressed:(UILongPressGestureRecognizer *)sender

{

    UIButton *btn = (UIButton *)sender.view;

    if (sender.state == UIGestureRecognizerStateBegan)

    {

        // AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 手机震动的效果

         startIndex = [self indexInBtnItemArray:btn];

         startPoint = [sender locationInView:sender.view];

         originCenter = btn.center;

         [UIView animateWithDuration:0.5 animations:^{

                btn.transform = CGAffineTransformMakeScale(1.1, 1.1);

                btn.alpha = 0.7;

         }];

    }

    else if (sender.state == UIGestureRecognizerStateChanged)

    {

            CGPoint newPoint = [sender locationInView:sender.view];

            CGFloat deltaX = newPoint.x-startPoint.x;

            CGFloat deltaY = newPoint.y-startPoint.y;

            btn.center = CGPointMake(btn.center.x+deltaX,btn.center.y+deltaY);

            NSInteger lastIndex = [self  indexOfPoint:btn.center withButton:btn];

        

            if (lastIndex<0)

            {

                contain = NO;

            }else

            {

               

                NSLog(@"开始%ld---结束%ld",startIndex,lastIndex);

                [_resoureceItemsArr exchangeObjectAtIndex:startIndex withObjectAtIndex:lastIndex];

                [UIView animateWithDuration:0.5 animations:^{

                CGPoint temp = CGPointZero;

                UIButton *button = _BtnItemArray[lastIndex];

                temp = button.center;

                button.center = originCenter;

                btn.center = temp;

                originCenter = btn.center;

                   contain = YES;

                }];

            }

         }

     else if (sender.state == UIGestureRecognizerStateEnded)

     {

         [UIView animateWithDuration:0.5 animations:^{

                btn.transform = CGAffineTransformIdentity;

                btn.alpha = 1.0;

                 if (!contain)

                {

                   btn.center = originCenter;

                }

                //[self createTableHeader];

         }];

    }

}

3.查询index

//开始或者结束的

-(NSInteger)indexInBtnItemArray:(UIButton *)btn

{

    for (NSInteger i = 0;i<_BtnItemArray.count;i++)

    {

        UIButton *button = _BtnItemArray[i];

        if(button == btn)

        {

            return i;

        }

    }

    return 0;

}


//结束的

- (NSInteger)indexOfPoint:(CGPoint)point withButton:(UIButton *)btn

{

    for (NSInteger i = 0;i<_BtnItemArray.count;i++)

    {

        UIButton *button = _BtnItemArray[i];

        if(button != btn)

        {

            if(CGRectContainsPoint(button.frame, point))

            {

                //NSLog(@"存在的%ld",i);

                return i;

            }

        }

    }

    return -1;

    

}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值