Vorrei utilizzare l'opzione UIViewAnimationOptionShowHideTransitionViews, che consente a toView e fromView di essere nella gerarchia della vista prima della transizione, ma ne mostra uno e nasconde l'altro.
Impostare toView per essere nascosto, aggiungerlo alla superview e installare i vincoli prima della transizione. È quindi possibile rimuovere la vecchia visualizzazione nel blocco di completamento. Qualcosa di simile a questo:
[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];
}];
fonte
2012-12-14 23:58:16
.. Da quello che vedo, fromView rimosso da superview automaticamente anche se l'opzione show/hide è stata utilizzata – Andy
Guardando la gerarchia della vista dopo la chiamata, il fromView non viene rimosso dalla superview (almeno su iOS 6 e iOS 7) – honus
Sembra per utilizzare l'animazione flip con il vincolo AutoLayout, dobbiamo impostare 'UIViewAnimationOptionShowHideTransitionViews' –