ios - framework - Retraso UIVisualEffectView con UIModalTransitionStyle CrossDissolve
uikit ios (2)
UIVisualEffectView
un controlador de vista modal que tiene un fondo con un UIVisualEffectView
con un UIBlurEffect
de tipo .light
Estoy presentando el controlador de vista modal de la siguiente manera:
infoViewController.modalPresentationStyle = .overFullScreen
infoViewController.modalTransitionStyle = .crossDissolve
self.present(infoViewController, animated: true, completion: nil)
Me doy cuenta de que la vista del efecto de desenfoque no aparece hasta que la animación crossDissolve
haya completado. Este no es el caso para otros estilos de transición como coverVertical
.
Esto está sucediendo solo en iOS 10 con Swift 3.
¿Cómo puedo hacer que la animación crossDissolve
funcione junto con la vista de efectos visuales en mi infoViewController
? ¿Alguna sugerencia / solución alternativa?
Lo que hago es reemplazar el crossDisolve
con una CATransition
, así:
self.present(controller,
animated: false,
completion: nil)
let transition = CATransition()
transition.duration = 0.3
transition.type = kCATransitionFade
view.window?.layer.add(transition, forKey: nil)
Espero eso ayude.
Controle su consumo, debería ver allí el motivo:
<_UIPopoverBackgroundVisualEffectView 0x7fe053562840> se le pide que anime su opacidad. Esto causará que el efecto aparezca roto hasta que la opacidad vuelva a 1.
No puede usar UIVisualEffectView
con la animación crossDissolve
...