获取单元格中心的想法并将其设置为UIView中心的值

时间:2012-07-16 09:41:54

标签: ios uitableview uigesturerecognizer

我目前正在研究拖放功能,幸运的是我发现了一个很好的tutorial。该项目的目标是在UILongPressGestureRecognizer的帮助下将“项目”从一个表视图拖放到另一个表视图。正如我从中学到的那样,你必须得到一个你所选择的单元格的“快照”,以便能够从表中拖出一些东西。我认为,下面是执行此操作的方法。

- (void)dragAndDropTableViewController:(DragAndDropTableVC *)ddtvc draggingGestureWillBegin:(UIGestureRecognizer *)gesture forCell:(UITableViewCell *)cell
{
    // create a snapshot of the cell
    NSLog(@"draggable delegate method is called");
    UIGraphicsBeginImageContext(cell.contentView.bounds.size);
    [cell.contentView.layer renderInContext: UIGraphicsGetCurrentContext()];
    UIImage *cellImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIImageView *cellImageView = [[UIImageView alloc] initWithImage:cellImage];
    self.dragAndDropView = [[UIView alloc] initWithFrame:cellImageView.frame];
    [self.dragAndDropView addSubview:cellImageView];
    [self.dragAndDropView setBackgroundColor:[UIColor blueColor]];
    [self.dragAndDropView setCenter:[gesture locationInView:self.view.superview]];

    [self.view.superview addSubview:self.dragAndDropView];
}

基本上,在获取单元格的“快照”后,您必须将其添加为UIView的子视图。让我烦恼的是这部分。

[self.dragAndDropView setCenter:[gesture locationInView:self.view.superview]];

这可能听起来很简单,但我想要做的是当长按完成时,可拖动的单元格应该比所选单元格的原始位置略高。

请赐教我:)谢谢!

1 个答案:

答案 0 :(得分:0)

实际上您必须将中心点转换为您的超级视图,然后您应该使用其中一种方法convertPoint: fromView:convertPoint: toView:,有关详细信息,请参阅this link

我认为这会对你有所帮助。