Как дублировать рендеринг кнопки УДАЛИТЬ на UITableViewCell Swipe для UISwipeGestureRecognizer? - PullRequest
1 голос
/ 30 марта 2011

В основном я создал UISwipeGestureRecognizer для своего UITableView, когда пользователь проводит пальцем слева направо.Когда пользователь проводит пальцем справа налево, 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 голосов
/ 02 января 2013

Вы можете попробовать что-то вроде этого

    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;
    }];

По сути, я сбросил фрейм, чтобы он не имел ширины, и установил начало координат в крайнем правом положении (чтобы оно росло справа налево),Затем в блоке анимации я устанавливаю кадр таким, каким я хочу, чтобы он был в конце.В вашем случае вы можете просто сохранить последний кадр в локальной переменной, прежде чем сбросить кадр, чтобы иметь нулевую ширину.

...