Ich habe 2 View-Controller, VCA
und VCB
. Ich übertrage von VCA
zu VCB
mit presentViewController(VCB, animated: true, completion: nil)
und kam mit dismissViewControllerAnimated(true, completion: nil)
in VCB
zurück. Dieser Übergang wird von einer benutzerdefinierten TransitionManager
Instanz verwaltet, wobei sowohl VCA
als auch VCB
ihre eigene TransitionManager
Instanz als ihre transitioningDelegate
haben.Warum können Sie den modalPresentationStyle während des Übergangs nicht einstellen?
Ich möchte VCB
über die Oberseite des VCA
so in VCB
‚s vorgestellt werden initialiser ich hinzufügen:
convenience init() {
self.init()
modalPresentationStyle = .OverFullScreen
}
Dies funktioniert.
Wenn ich jedoch modalPresentationStyle = .OverFullScreen
von VCB
‚s initialiser entfernen, und versuchen Sie es in den UIViewControllerAnimatedTransitioning
Delegierten in der TransitionManager
Klasse zu setzen, wie
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let transitionContext: UIViewControllerContextTransitioning!
let toVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
toVC.modalPresentationStyle = .OverFullScreen
// do animation ...
}
folge der Effekt funktioniert nicht. Warum ist das der Fall, bitte?
bearbeiten
Es scheint, dass modalPresentationStyle.rawValue
0 (.FullScreen
) in VCB
's viewDidLoad
und dann 5 (dem gewünschten Wert, OverFullScreen
) in VCB
' s viewDidAppear
.
Für zukünftige Benutzer ist dieses Zitat von: https://developer.apple.com/documentation/uikit/uiviewcontroller/1621388-modaltransitionstyle –