collectionview cell 拖动
来源:互联网 发布:风行直播软件下载 编辑:程序博客网 时间:2024/05/16 13:46
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了,下面奉上效果图
0 0
- collectionview cell 拖动
- 多种Cell的CollectionView
- tableview上cell 加载collectionview
- collectionView 自动调整cell大小
- collectionView reloadData 之后 cell消失
- 07 - collectionView滚到indexPath指定Cell
- collectionview 的 cell复用处理
- tableView,collectionView如何获取当前cell?
- ios tableview/collectionView关于点击cell后 刷新cell
- CollectionView中的一个cell中加载xib中的CollectionView 不显示cell
- iOS开发-UI控件:CollectionView 获取指定位置的cell
- 在collectionView中返回两个不同的cell
- storybord 中设置collectionView中cell的背景色无效
- 给TableView或者CollectionView的cell添加简单动画
- 给TableView或者CollectionView的cell添加动画
- CollectionView瀑布流添加头视图,自定义Cell计算高度
- collectionView代理方法快速设置cell大小上下左右间隔
- CollectionView
- OpenSSLX509证书操作函数
- 蓝桥杯 高斯日记
- SurfaceFlinger 分析 一
- Classifying MNIST digits using Logistic Regression
- WebView使用基础
- collectionview cell 拖动
- XML CDATA
- Android 仿QQ好友分组列表、ExpandableListView的使用详解
- [LeetCode][1]Two Sum解析 -Java实现
- HTTP及XMLHTTP状态代码一览
- C++:文件流读写
- android Error:Error: File path too long on Windows, keep below 240 characters
- SVN使用教程总结
- 电容在电路中的作用