我想将 UICollectionViewCell 拖到另一个 UIView 或另一个元素上。我创建了 UICollectionViewCell 的子类。
这是我的单元类,UICollectionViewCell 的子类:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
self.dragObject=self;
self.homePosition = CGPointMake(self.frame.origin.x,
self.frame.origin.y);
[self.superview.superview bringSubviewToFront:self];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint touchPoint = [[touches anyObject] locationInView:self.superview];
CGRect newDragObjectFrame = CGRectMake(touchPoint.x - touchOffset.x,
touchPoint.y - touchOffset.y,
self.frame.size.width,
self.frame.size.height);
self.frame = newDragObjectFrame;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CGRect newFrame = CGRectMake(self.homePosition.x, self.homePosition.y,
self.frame.size.width,
self.frame.size.height);
[UIView animateWithDuration:0.2
animations:^{
self.frame = newFrame;
}];
}
我可以在 UICollectionView 中拖放任何 UICollectionViewCell。但是我不能在屏幕上的另一个元素上拖动一个单元格。例如另一个 UICollectionView 或 UIView。
如果我将 clipToBounds 属性设置为“false”,那么我可以将一个单元格拖到任何地方,但它不会隐藏溢出内容,例如滚动的单元格。
在这张图片中,clipToBounds=false: