La documentazione di Apple (attualmente) afferma ...
Quando si utilizza la classe UIVisualEffectView, evitare valori alfa inferiori a 1.
e
L'impostazione dell'alfa su un valore inferiore a 1 nella vista degli effetti visivi o in una qualsiasi delle sue superview fa sì che molti effetti sembrino errati o non vengano visualizzati affatto.
Credo che qui manchi un contesto importante ...
Suggerirei che l'intento è quello di evitare valori alfa inferiori a 1 per una visualizzazione persistente. A mio modesto parere questo non si applica all'animazione di una vista.
Il mio punto: suggerirei che i valori alfa inferiori a 1 siano accettabili per le animazioni.
Il messaggio del terminale afferma:
A UIVisualEffectView viene chiesto di animare la sua opacità. In questo modo l'effetto apparirà interrotto fino a quando l'opacità non torna a 1.
Leggendo con attenzione, sarà l'effetto appare essere rotto. I miei punti su questo essere:
- l'apparente rottura conta davvero solo per una visione che è persistente - non cambia;
- una visualizzazione persistente / immutabile
UIVisualEffectcon un valore alfa inferiore a 1 non si presenterà come previsto / progettato da Apple; e
- il messaggio nel terminale non è un errore, solo un avvertimento.
Per estendere la risposta di @ jrturton sopra che mi ha aiutato a risolvere il mio problema, aggiungerei ...
Per sfumare, UIVisualEffectutilizzare il seguente codice (Objective-C):
UIView.animateWithDuration(1.0, animations: {
// EITHER...
self.blurEffectView.effect = UIBlurEffect(nil)
// OR...
self.blurEffectView.alpha = 0
}, completion: { (finished: Bool) -> Void in
self.blurEffectView.removeFromSuperview()
} )
Uso con successo entrambi i metodi: impostando la effectproprietà su nile impostando la alphaproprietà su 0.
Notare che l'impostazione di effecta nilcrea un "bel flash" (in mancanza di una descrizione migliore) alla fine dell'animazione, mentre l'impostazione di alphaa 0crea una transizione graduale.
(Fammi sapere eventuali errori di sintassi ... scrivo in obj-c.)