Удалить из суперпредставления, не работающего в обработчике завершения анимации - PullRequest
0 голосов
/ 26 июня 2019

У меня есть UIView с несколькими добавленными UILabels.Я просто перемещаю их все в центр экрана с анимацией, а затем пытаюсь удалить их из суперпредставления в обработчике завершения анимации.

for (label in [self.view subviews])
{
    if([label isKindOfClass:[UILabel class]])
    {
        CGRect frame = CGRectMake(self.view.frame.size.width/2, self.view.frame.size.height/2, label.frame.size.width, label.frame.size.height);
        [UIView animateWithDuration:2.0
                              delay:0.0
                            options: UIViewAnimationOptionCurveEaseInOut
                         animations:^{
                             [self->label setFrame:frame];
                         }
                         completion:^(BOOL finished){
                             dispatch_async(dispatch_get_main_queue(),^{
                                 [self->label removeFromSuperview];
                             });
                         }
         ];
    }
}

Проблема, с которой я сталкиваюсь, заключается в том, чтоВ конце анимации UILabels остаются.Если я помещу вызов removeFromSuperView вне блока анимации, он будет работать, но, конечно, они будут удалены до того, как анимация сможет завершиться.

1 Ответ

1 голос
/ 26 июня 2019

У вас есть label в качестве переменной в for-in и self->label в блоках. По-видимому, вы работали не с тем лейблом, о котором думали.

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