Как удалить UIView в конце анимации? - PullRequest
0 голосов
/ 29 марта 2011

Я хочу, чтобы этот ярлык был удален после завершения анимации.И я хотел бы больше не видеть его во время анимации в следующем коде внутри моей функции touchesEnded.Я не вижу способа проверить, если lbl.isAnimating уже игнорирует его в цикле for (без создания собственного списка UILabels), но я бы подумал, что мой код завершения здесь будет работать.Но после окончания анимации я все равно попадаю в точку if внутри блока, если нажимаю на невидимую метку.

    for( lbl in mLabelOutletCollection ) {

      if (CGRectContainsPoint([lbl frame], [touch locationInView:self.view]))
      {

        [UIView animateWithDuration:1.0 delay:0.0
                options:(UIViewAnimationOptionAllowUserInteraction)
                         animations:^{
                             lbl.alpha = 0.0;
                             lbl.transform = CGAffineTransformMakeScale(1.5, 1.5); 
                         }

                         completion:^(BOOL  completed){
                             [lbl removeFromSuperview];
                             lbl.hidden=YES;
                         }
         ];
       }
     } 

Ответы [ 2 ]

0 голосов
/ 29 марта 2011

Я решил это, добавив bool и сделав это после цикла. Несмотря на то, что lbl был удален, он все еще существовал в OutletCollection и помнил, где он был. Я пробовал это раньше, но делал это внутри цикла, что вызывает исключение.

    if ( found ) [mLabelOutletCollection removeObject:lbl];
0 голосов
/ 29 марта 2011

Override

- (void)finishAnimation:(NSString *)animationId finished:(BOOL)finished context:(void *)context {

И положить:

[lbl removeFromSuperview];
lbl.hidden=YES;

есть. Кроме того, не уверен, но я не думаю, что вам нужна вторая строка lbl.hidden; поскольку вы уже удаляете его из суперпредставления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...