我有一些包含一些图像的集合视图。我有另一个UIView。我希望将集合视图中的图像拖放到UIView中,这样在放弃UIView时,某些操作会说颜色发生变化。此外,图像应在掉落后保留在原始位置。
这是我的集合视图代码。
-(UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
UICollectionViewCell*aCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];
UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(3,5,100,100)];
imgView.contentMode = UIViewContentModeScaleAspectFit;
imgView.clipsToBounds = YES;
imgView.image = [UIImage imageNamed: [imagePackArray objectAtIndex:indexPath.row]];
[aCell addSubview:imgView];
aCell.backgroundColor = [UIColor redColor];
return aCell;
}
我尝试了平移手势来实现这一点,但是没有成功。
- (IBAction)handlePan:(UIPanGestureRecognizer *)sender {
NSLog(@"panning");
CGPoint translation = [sender translationInView:self.view];
sender.view.center = CGPointMake(sender.view.center.x + translation.x,
sender.view.center.y + translation.y);
[sender setTranslation:CGPointMake(0, 0) inView:self.view];
}
请看屏幕截图。我想将图像从集合视图拖动到购物车图像(在UIView中)
我应该采取什么方法?有人可以指导我或提供可以提供帮助的代码段/链接吗?
答案 0 :(得分:2)
我在Markus Gasser找到了一个图书馆。你可以在下面找到它:
On Github(权威):https://github.com/frenetisch-applaudierend/ios-drag-and-drop 要么 在Bitbucket:https://bitbucket.org/foensi/ios-drag-and-drop
这是一个非常干净的库,附带一个示例应用程序。它显示了如何将视图从一个堆栈移动到另一个堆栈;一切都很好动画。
警告:使用UICollectionView
我已经使用CollectionViews尝试过:如果您将整个视图注册为dragSource
(演示显示),我发现您无法再滚动内容。这是因为拖放控制器的手势识别器捕获所有手势事件,并且不会将其传递给基础UICollectionView
。
我向作者询问了这个问题,他有这样说:
我的意思是实现一种机制来提供不同的手势 拖动的识别器,但我从来没有真正需要它在我的项目中。 我目前在这种情况下所做的只是定义一个子视图 UICollectionViewCell作为拖动源。因此,如果用户滚动 在集合视图中它仍然可以工作,但是从让我们说 单元格的图标将开始拖放。另一种可能的方式 将委托设置为UICollectionView panGestureRecognizer和 实行 -gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:在其他pan识别器上失败(虽然我从未使用过它)。
所有这一切都非常有用 - 但我仍然需要弄清楚如何使滚动工作。