Użyłbym opcji UIViewAnimationOptionShowHideTransitionViews, która umożliwia zarówno widok widoków i widoków z widoku w hierarchii widoku przed przejściem, ale pokazuje jeden i ukrywa drugi.
Ustaw jako widok, aby był ukryty, dodaj go do superwizji i zainstaluj wiązania przed przejściem. Następnie możesz usunąć stary widok w bloku zakończenia. Coś takiego:
[toView setHidden: YES];
[containerView addSubview: toView];
[containerView addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @"|[toView]|" options: 0 metrics: nil views: NSDictionaryOfVariableBindings(containerView, toView)]];
[containerView addConstraints: [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[toView]|" options: 0 metrics: nil views: NSDictionaryOfVariableBindings(containerView, toView)]];
[UIView transitionFromView: fromView toView: toView duration: 1.0 options: UIViewAnimationOptionTransitionFlipFromBottom | UIViewAnimationOptionShowHideTransitionViews completion:^(BOOL finished) {
[fromView removeFromSuperview];
}];
.. Z tego co widzę, automatycznie usunięto widok z widoku z podglądu, nawet jeśli użyto opcji pokaż/ukryj – Andy
Patrząc na hierarchię widoku po wywołaniu, outView nie jest wyzywająco usunięty z superwizja (przynajmniej na iOS 6 i iOS 7) – honus
Wygląda na to, aby użyć animacji klapki z ograniczeniem AutoLayout, musimy ustawić 'UIViewAnimationOptionShowHideTransitionViews' –