如何在UITableViewCell上复制DELETE按钮的渲染为UISwipeGestureRecognizer滑动?

时间:2011-03-29 20:54:37

标签: iphone ios4 uiview core-animation uigesturerecognizer

基本上,当用户从左向右滑动时,我为UITableView创建了一个UISwipeGestureRecognizer。当用户从右向左滑动时,DELETE将呈现并按预期运行。

我正在尝试使用新的自定义UIButton来呈现与刷新时DELETE按钮呈现的完全相同的方式。它不会滑动但是从右到左慢慢地显示出来?

我想这样做,我的自定义UIButton出现在与DELETE相同的位置,除非此时用户从右向左滑动。

在从右到左检测到滑动后,我将此方法设置为@selector:

- (void)displayAddArchiveView:(UIGestureRecognizer *)gestureRecognizer {
    // Assume this is the view container that will contain my UIButton
    GreenGradientView *archiveView = [[GreenGradientView alloc] initWithFrame:CGRectMake(211.0, 3.0, 63.0, 30.0)];

    if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
       CGPoint swipeLocation = [gestureRecognizer locationInView:self.reportsTableView];
       NSIndexPath *swipedIndexPath = [self.reportsTableView indexPathForRowAtPoint:swipeLocation];
       ReportsTableViewCell *swipedCell = (ReportsTableViewCell *)[self.reportsTableView cellForRowAtIndexPath:swipedIndexPath];

      [self tableView:reportsTableView willBeginEditingRowAtIndexPath:swipedIndexPath];

      // HERE I should do some sort of UIView animation block to slowly reveal it 
      // from the right to left or something? Any suggestions. Not sure how to go about it?
      [swipedCell addSubview:archiveView];
    }
}

我在代码块中的注释表明了我的想法。自定义UIView实际上确实在刷卡后显示,所以我知道它有效。这只是让动画正确,与DELETE按钮显示方式相同的问题?建议?

谢谢!

1 个答案:

答案 0 :(得分:0)

你可以试试这样的事情

    CGRect finalFrame = archiveView.frame;
    archiveView.frame = CGRectMake(finalFrame.origin.x + finalFrame.size.width, finalFrame.origin.y, 0, finalFrame.size.height);
    [UIView animateWithDuration:0.3 animations:^{
        archiveView.frame = finalFrame;
    }];

基本上我已经重置了框架,因此它没有宽度,并将原点设置在最右边(这样它就从右向左增长)。然后在动画块中,我将帧设置为我想要的结束。在您的情况下,您可以在将帧重置为零宽度之前将最终帧保存在局部变量中。