collectionview cell 拖动

原创 2016年06月01日 16:22:49

1.创建collectionView并设置代理

 
- (UICollectionView *)collectionView{
    if (_collectionView == nil) {
        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
        layout.itemSize = CGSizeMake(50, 50);
        _collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 20, self.view.bounds.size.width, self.view.bounds.size.height) collectionViewLayout:layout];
        layout.minimumLineSpacing = 10;
        layout.minimumInteritemSpacing = 10;
        [_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];
        _collectionView.backgroundColor = [UIColor cyanColor];
        _collectionView.dataSource = self;
       //此处给其增加长按手势,用此手势触发cell移动效果
        UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlelongGesture:)];
        [_collectionView addGestureRecognizer:longGesture];
    }
    return _collectionView;
}
 

2.设置其资源

_dataSource = [NSMutableArray array];
    for (int i = 1; i <= 50; i++) {
        NSString *imageName = [NSString stringWithFormat:@"%d",i];
        [_dataSource addObject:imageName];
    }

3.监听手势,并设置其允许移动cell和交换资源

 

 
- (void)handlelongGesture:(UILongPressGestureRecognizer *)longGesture {
    //判断手势状态
    switch (longGesture.state) {
        case UIGestureRecognizerStateBegan:{
            //判断手势落点位置是否在路径上
            NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:[longGesture locationInView:self.collectionView]];
            if (indexPath == nil) {
                break;
            }
            //在路径上则开始移动该路径上的cell
            [self.collectionView beginInteractiveMovementForItemAtIndexPath:indexPath];
        }
            break;
        case UIGestureRecognizerStateChanged:
            //移动过程当中随时更新cell位置
            [self.collectionView updateInteractiveMovementTargetPosition:[longGesture locationInView:self.collectionView]];
            break;
        case UIGestureRecognizerStateEnded:
            //移动结束后关闭cell移动
            [self.collectionView endInteractiveMovement];
            break;
        default:
            [self.collectionView cancelInteractiveMovement];
            break;
    }
}

- (BOOL)collectionView:(UICollectionView *)collectionView canMoveItemAtIndexPath:(NSIndexPath *)indexPath{
    //返回YES允许其item移动
    return YES;
}

- (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath*)destinationIndexPath {
    //取出源item数据
    id objc = [_dataSource objectAtIndex:sourceIndexPath.item];
    //从资源数组中移除该数据
    [_dataSource removeObject:objc];
    //将数据插入到资源数组中的目标位置上
    [_dataSource insertObject:objc atIndex:destinationIndexPath.item];
} 
 

 

通过以上设置便可以成功移动cell了,下面奉上效果图

iOS开发UICollectionView拖拽移动单元格

一.介绍 iOS9提供API实现单元格排序呢功能,使用UICollectionView及其代理方法.iOS9之后有自带方法可以实现该效果,只需添加长按手势,实现手势方法和调用iOS9的API交换数据...
  • wgl_happy
  • wgl_happy
  • 2016年08月11日 10:29
  • 4023

IOS CollectionView 拖拽移动

collection 增加长按手势 //添加长按的手势 UILongPressGestureRecognizer *longPress=[[UILongPressGestureRecog...
  • Goods_boy
  • Goods_boy
  • 2017年04月25日 22:10
  • 694

iOS拖拽移动CollectionView

  • 2016年07月27日 12:36
  • 89KB
  • 下载

iOS collectionViewCell拖动动画

http://blog.csdn.net/qq_30513483/article/details/51312278
  • allanGold
  • allanGold
  • 2016年09月07日 16:05
  • 189

iOS UICollectionViewCell拖拽移动(配Demo下载)

这个月项目用到了拖拽移动UICollectionView的位置,原理如下: 涉及到知识小点: 拖拽方法 1、获取当前手势位置,及对应cell的indexPath - (void)lon...
  • lovechris00
  • lovechris00
  • 2016年07月27日 11:49
  • 2558

iOS UICollectionView 高级用法(长按cell移动重新排列)

iOS9 之后 前言: 看完你可以学到哪些呢? 就是文章标题那么多, 只有那么多. . 手残效果图没弄好.@property (nonatomic, strong) UICollectionView...
  • sinat_30162391
  • sinat_30162391
  • 2016年05月27日 18:16
  • 11021

使用iOS控件UICollectionView生成可拖动的桌面

一个App受欢迎的程度,一方面来源于它本身为用户提供便捷的功能,另一方面则来源于它的UI。UI是用户体验重要的组成部分,构成UI的的元素恰恰离不开那些看似独立的控件。在开发的过程中,大家对UITabl...
  • shenjie12345678
  • shenjie12345678
  • 2016年06月15日 14:36
  • 1427

UICollectionView的cell拖动交换位置

collectionView的cell拖动交换位置
  • L_weiguo
  • L_weiguo
  • 2016年09月27日 10:45
  • 1628

UICollectionView的item长按移动编辑

iOS9.0之后,UICollectionView多了两个代理方法,可以通过这俩个方法来对其上的item进行移动编辑,本文主要说下移动功能,移动前加了个抖动手势(类似APP删除时的抖动效果),然后拖动...
  • qq_34417314
  • qq_34417314
  • 2017年06月20日 23:44
  • 360

UICollectionViewCell 长按重排

首先,先祝博友们新年快乐!鸡年大吉! 在写这篇博文的时候,已经是1月25日,最后一天上班了,闲来无事,写下之前封装的拖动效果,希望能帮助有需要的博友们~ 先上效果图。 1 、 全部 Cell ...
  • yutianlong9306
  • yutianlong9306
  • 2017年01月25日 11:23
  • 747
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:collectionview cell 拖动
举报原因:
原因补充:

(最多只允许输入30个字)