Encontré un problema al presentar el controlador de cultivo sobre un controlador de navegación.
Al cerrar el controlador de recorte, al final de la transición, la vista del controlador de navegación se elimina y no se muestra ... (ocurre en iPhone y iPad y solo en iOS 13).
sin mencionar que la navegación sigue ahí y la interfaz de usuario está "atascada".
@uchiaTziki Um. Puede que tengas que mostrármelo, ¡lo siento! ¿Puedes adjuntar una captura de pantalla?
capturas de pantalla adjuntas ...
Espero que aclare las cosas ...
Hmm, ¿entonces lo estás presentando dentro de otro controlador de vista que se presenta?
Me pregunto si este código de descarte termina descartando el controlador de vista incorrecto, entonces:
¿Puede intentar cambiar el código allí y ver si puede encontrar una combinación que lo solucione?
Sin poder probarlo yo mismo, no hay nada que pueda hacer por mi parte. ¡Perdón!
Intenté casi cualquier cosa, pero volveré a intentarlo ...
El controlador en la parte posterior no se descarta ... se está eliminando la vista (lo cual es extraño).
¿Probó estos códigos antes de presentar cropViewController?
if #available(iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
}
Lo probé esta mañana. Soluciona el error, pero la animación es la animación modal predeterminada (de abajo hacia arriba).
La animación especial de la vista / marco no funciona con esta solución
@uchiaTziki , ¿encontraste alguna solución?
¿Es esto reproducible en la aplicación de muestra? Si es así, potencialmente puedo echarle un vistazo.
La forma en que funcionan las presentaciones modales en iOS 13 cambió con respecto a las versiones anteriores de iOS. Pero todavía no he tenido una buena oportunidad de averiguar exactamente qué necesitamos hacer para actualizar el código para eso.
Por lo que puedo ver, no funciona correctamente cuando tienes lo siguiente:
Lo siento, estaba de vacaciones.
¿Probó estos códigos antes de presentar cropViewController?
if #available(iOS 13.0, *) { cropViewController.modalPresentationStyle = .fullScreen }
Usar eso ( @TimOliver ) en la última versión beta de Xcode funcionó. Entonces, la animación de transición me está funcionando ahora.
Esto funcionó para mí también.
func cropViewController(_ cropViewController: CropViewController, didFinishCancelled cancelled: Bool) {
//This code fails on iOS13.
//cropViewController.dismiss(animated: true)
let viewController = cropViewController.children.first!
viewController.modalTransitionStyle = .coverVertical
viewController.presentingViewController?.dismiss(animated: true, completion: nil)
}
Este método funciona bien en iOS 13.
No sé por qué.
Espero que encuentres una mejor manera.
Hola, me encontré con el error en iOS 13.1
si uso
dismiss(animated: true, completion: nil)
en iOS 13.1,
Todos los ViewController desaparecen.
No sé por qué.
Solo tuve que configurar cropViewController.modalTransitionStyle = .coverVertical
como una solución, ya que entonces ya no usa la transición personalizada ...
Lo mismo que @oblq aquí.
¿Probó estos códigos antes de presentar cropViewController?
if #available(iOS 13.0, *) { cropViewController.modalPresentationStyle = .fullScreen }
Solucionado mi problema, gracias
si #disponible (iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
}
Gracias. Esto solucionó mi problema en iOS 13
después de recortar la imagen, descartando el controlador de recorte, al final de la transición, la vista del controlador de navegación se elimina y no se muestra
Por favor, ayúdame
después de recortar la imagen, descartando el controlador de recorte, al final de la transición, la vista del controlador de navegación se elimina y no se muestra
Por favor, ayúdame
¡Hola! Simplemente configure cropViewController.dismiss(animated: **false**, completion: nil)
lugar de cropViewController.dismiss(animated: **true**, completion: nil)
También he intentado solucionar este problema. Como dice @ ibdman1991 , la desactivación de la animación funciona, pero se ve mal. Creo que eliminar el transitioningDelegate
podría ser una mejor solución, aunque no estoy seguro de cuán impactante sería esto.
let cropViewController = CropViewController(image: image)
cropViewController.modalTransitionStyle = .crossDissolve
cropViewController.transitioningDelegate = nil
si #disponible (iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
}
Este problema se resuelve en iOS 13 y superior Gracias
si #disponible (iOS 13.0, *) {
cropViewController.modalPresentationStyle = .fullScreen
// cropViewController.modalTransitionStyle = .crossDissolve
cropViewController.transitioningDelegate = nulo
}
Trabajando para mi
Uhh. Bueno. Dado que establecer explícitamente el estilo de presentación en pantalla completa parecía solucionarlo para la mayoría de las personas, voy a cerrar esto. :)
Si tiene un caso de uso específico que requiere un estilo de presentación modal explícitamente diferente, abra un nuevo problema y explique con mucho cuidado lo que está tratando de hacer. Tenga en cuenta que si se trata de un error en iOS 13, es posible que no podamos hacer mucho aquí.
¡Gracias!
Comentario más útil
Este método funciona bien en iOS 13.
No sé por qué.
Espero que encuentres una mejor manera.
https://www.dropbox.com/s/wyzc8errinfap1f/TestCrop.zip?dl=0