UIView Проблема с анимацией - PullRequest
0 голосов
/ 05 июля 2011
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.30f];

[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:viewSettings cache:YES];   
viewSettings.alpha = 0;
[viewSettings removeFromSuperview];
[UIView commitAnimations];

Я написал приведенный выше код, который хорошо работает, когда я добавляю вид с помощью анимации, но он не работает, когда я удаляю вид из суперпредставления. Анимация работает, если я уберу [viewSettings removeFromSuperview] строку. Я не знаю, где я делаю неправильно.

Ответы [ 4 ]

2 голосов
/ 05 июля 2011

Вам нужно удалить его из суперпредставления после анимация завершена.Это очень легко сделать, если вы используете API на основе блоков, что Apple рекомендует вам сделать:

[UIView transitionWithView:viewSettings 
                  duration:0.30f 
                   options:UIViewAnimationOptionTransitionNone  
                animations:^{ 
    [viewSettings setAlpha:0];
} completion:^(BOOL finished) {
    [viewSettings removeFromSuperview];
}];

Вы можете прочитать обо всех параметрах в Документация Apple .

1 голос
/ 05 июля 2011

removeFromSuperview не является анимационным действием, поэтому оно выполняется немедленно. Как только вы commitAnimations, ваш вид больше не является частью его суперпредставления, поэтому вы не можете видеть анимацию, даже если она все еще происходит.

Если вы хотите, чтобы ваша анимация происходила, тогда представление будет удалено, вызовите removeFromSuperview, когда закончится анимация, например, в селекторе, указанном в setAnimationDidStopSelector:.

1 голос
/ 05 июля 2011

Попробуйте удалить вид после завершения анимации. Первоначально альфа-значение представления равно 1, затем вы применяете анимацию и делаете ее равной 0. Теперь представление все еще там, но оно не видно. Когда анимация закончится, удалите вид. Я думаю, что это должно работать.

0 голосов
/ 05 июля 2011

Я думаю, viewSettings удаляется до того, как вы совершите анимацию.Попробуйте перевернуть две последние строки.

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