Вручную исчезнуть во вновь добавленном подпредставлении? - PullRequest
16 голосов
/ 17 мая 2010

Я хочу, чтобы представление исчезало при добавлении в стек через

[self.view addSubview:someSecondaryViewController.view];

Как мне оживить этот вызов, чтобы представление исчезало (и исчезало)?

Ответы [ 3 ]

29 голосов
/ 17 мая 2010

Установите альфа на ноль перед анимацией, затем анимируйте альфа на единицу.

[fadingView setAlpha:0.0];
[containerView addSubview:fadingView];
[UIView beginAnimations:nil context:nil];
[fadingView setAlpha:1.0];
[UIView commitAnimations];

Перед удалением вида просто оживите альфа до нуля.

Кстати, иерархия представлений - это больше дерево, чем стек.

Edit:

Если у вас нет другой очистки после завершения анимации при исчезновении вида, используйте:

[UIView setAnimationDelegate:fadingView];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];

Если вы уже устанавливаете didStopSelector, тогда вызовите removeFromSuperview там.

21 голосов
/ 17 марта 2011

Вы также можете использовать блоки для удаления вида из его суперпредставления после завершения анимации затухания:

[UIView animateWithDuration:0.2
                 animations:^{viewOut.alpha = 0.0;}
                 completion:^(BOOL finished){[viewOut removeFromSuperview];}];
1 голос
/ 16 июня 2016

А в Свифте…

В

someSecondaryViewController.view.alpha = 0.0
self.view.addSubview(someSecondaryViewController.view)
UIView.animate(withDuration: 0.2, animations: { self.someSecondaryViewController.view.alpha = 1.0 })

Out

UIView.animate(withDuration: 0.2, animations: { self.someSecondaryViewController.view.alpha = 0.0 }) { (done: Bool) in
    self.someSecondaryViewController.view.removeFromSuperview()
}
...