Si desea utilizar el método de transición CAT de "solución rápida" ...
class AA: UIViewController
func goToBB {
let bb = .. instantiateViewcontroller, storyboard etc .. as! AlreadyOnboardLogin
let tr = CATransition()
tr.duration = 0.25
tr.type = kCATransitionMoveIn
tr.subtype = kCATransitionFromRight
view.window!.layer.add(tr, forKey: kCATransition)
present(bb, animated: false)
bb.delegate, etc = set any other needed values
}
y entonces ...
func dismissingBB() {
let tr = CATransition()
tr.duration = 0.25
tr.type = kCATransitionReveal
tr.subtype = kCATransitionFromLeft
view.window!.layer.add(tr, forKey: kCATransition)
dismiss(self) .. or dismiss(bb), or whatever
}
Desafortunadamente, todo esto no es realmente correcto :(
CATransition
realmente no está hecho para hacer este trabajo.
Tenga en cuenta que obtendrá el molesto fundido cruzado a negro que, lamentablemente, arruina el efecto.
A muchos desarrolladores (como yo) realmente no les gusta usar NavigationController
. A menudo, es más flexible presentar simplemente de manera ad-hoc sobre la marcha, especialmente para aplicaciones inusuales y complejas. Sin embargo, no es difícil "agregar" un controlador de navegación.
simplemente en el guión gráfico, vaya a la entrada VC y haga clic en "incrustar -> en el controlador de navegación". Realmente eso es todo. O,
en didFinishLaunchingWithOptions
es fácil de construir su controlador de navegación si lo prefiere
realmente ni siquiera necesita mantener la variable en cualquier lugar, ya .navigationController
que siempre está disponible como propiedad, fácil.
Realmente, una vez que tienes un navigationController, es trivial hacer transiciones entre pantallas,
let nextScreen = instantiateViewController etc as! NextScreen
navigationController?
.pushViewController(nextScreen, animated: true)
y tu puedes pop
.
Sin embargo, eso solo le da el efecto estándar de "doble empuje" de Apple ...
(El viejo se desliza a menor velocidad, mientras que el nuevo se desliza).
En general, y sorprendentemente, normalmente debe hacer el esfuerzo de realizar una transición personalizada completa.
Incluso si solo desea la transición más simple, más común, pasar / salir, tiene que hacer una transición personalizada completa.
Afortunadamente, para hacer eso, hay un código repetitivo de cortar y pegar en este control de calidad ... https://stackoverflow.com/a/48081504/294884 . ¡Feliz año nuevo 2018!