Удалить из суперпредставления во время завершения удаляет его раньше - PullRequest
0 голосов
/ 02 марта 2012

У меня есть этот код, например:

[UIView animateWithDuration:0.3
                          delay:0
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^{
                         [self animateMenuOut:menu];
                     }completion:^(BOOL finished) {
                         [menu removeFromSuperview];
                     }];

Однако вместо анимации он просто исчезнет из вида.Удаление строки [menu removeFromSuperview]; делает ее работоспособной.

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

Нет проблем с этим кодом. Некоторые идеи:

  1. Проблема внутри animateMenuOut
  2. Плохая перерисовка производительности. Низкий FPS и длительность 0,3 сек => вы не видите анимации. Вы пытались увеличить продолжительность?
  3. Вы блокируете основной поток после запуска анимации.
0 голосов
/ 02 марта 2012

Скорее всего, ваш метод -animateMenuOut имеет характер «запускай и забывай» ... как только ваш анимационный код срабатывает, он работает в фоновом потоке и выполнение вашего кода продолжается (до завершения). Насколько я знаю, это функция, позволяющая избежать блокировки пользовательского интерфейса.

Надеюсь, это помогло.

Нав.

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