Удалить подпредставление с аниминированием - PullRequest
0 голосов
/ 08 ноября 2011

Я пытаюсь удалить форму подпредставления с анимацией, как показано ниже. Однако, когда я нажимаю кнопку, чтобы запустить код, представление немедленно удаляется. Кто-нибудь знает, что здесь происходит.

Спасибо

CGRect rect=[self.view viewWithTag:10].frame;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1];
        [UIView setAnimationDidStopSelector:@selector(removeLayer)];
        [[self.view viewWithTag:10] setFrame:CGRectMake(rect.origin.x, btn.frame.origin.y, rect.size.width, 0)];
        [UIView animateWithDuration:1.0 animations:^{[[self.view viewWithTag:10] setFrame:CGRectMake(rect.origin.x, btn.frame.origin.y, rect.size.width, 0)];} completion:^(BOOL finished){[[self.view viewWithTag:10] removeFromSuperview];}];
        [UIView commitAnimations];


-(void)removeLayer{
    [[self.view viewWithTag:10] removeFromSuperview];
}

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

Похоже, вы пытаетесь использовать два разных метода анимации одновременно.Все что вам нужно это:

CGRect rect=[self.view viewWithTag:10].frame;

[UIView animateWithDuration:1.0 animations:^{[[self.view viewWithTag:10] setFrame:CGRectMake(rect.origin.x, btn.frame.origin.y, rect.size.width, 0)];} completion:^(BOOL finished){[[self.view viewWithTag:10] removeFromSuperview];}];
1 голос
/ 08 ноября 2011

Вы комбинируете оба типа API анимации - я думаю, что блочный возвращается сразу, поэтому ваш didStopSelector вызывается сразу.

Попробуйте просто использовать эту часть:

[UIView animateWithDuration:1.0 animations:^{[[self.view viewWithTag:10] setFrame:CGRectMake(rect.origin.x, btn.frame.origin.y, rect.size.width, 0)];} completion:^(BOOL finished){[[self.view viewWithTag:10] removeFromSuperview];}];
0 голосов
/ 08 ноября 2011

Я думаю, что вы забыли установить делегат анимации:

[UIView setAnimationDelegate:self];

В вашем коде UIView не знает, на какой объект он должен отправить селектор "removeLayer"

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