可移动的CollectionViewCell
来源:互联网 发布:惠州网络推广招聘 编辑:程序博客网 时间:2024/04/30 11:40
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];}
1 0
- 可移动的CollectionViewCell
- 实现collectionViewCell的移动(长按或者直接拖拽)
- 实现collectionViewCell的移动(长按或者直接拖拽)
- 可移动的模块
- 可移动的菜单栏
- 可移动的ImageView
- 可移动的div
- collectionviewcell的圆角和阴影问题
- iOS中collectionViewCell显示不正确的问题
- 点击UITableViewCell里的CollectionViewCell进行跳转
- ios 取到collectionviewcell的动态位置
- 显示可移动的层
- 可移动层的实现
- 可移动的DIV层
- 可移动按钮的实现
- 可移动的弹出层
- 可移动的弹出框
- 创建可移动的视图
- HDU 5046(舞蹈链)
- Linux 下实现进程退出后自动重启
- VS中CordovaApp 环境详细配置
- linux下message没有了
- BZOJ 2626: JZPFAR|K-D tree
- 可移动的CollectionViewCell
- Cocos2dx内存管理、优化减少内存和多线程方面的问题
- JSP中的各种中文乱码问题解决方案
- JAVA设计模式之单例模式
- CentOS 搭建Git Gitosis 服务器
- 简单keystore操作(更新中)
- socket C 客户端发送数据到服务端,操作mysql数据库
- 23种设计模式(5):原型模式
- ubantu14.0.1安装jdk1.7.1