La documentation Apple indique (actuellement) ...
Lorsque vous utilisez la classe UIVisualEffectView, évitez les valeurs alpha inférieures à 1.
et
Si vous définissez l'alpha sur moins de 1 sur la vue des effets visuels ou sur l'une de ses super-vues, de nombreux effets semblent incorrects ou n'apparaissent pas du tout.
Je pense qu'il manque ici un contexte important ...
Je suggérerais que l'intention est d'éviter les valeurs alpha inférieures à 1 pour une vue persistante. À mon humble avis, cela ne s'applique pas à l'animation d'une vue.
Mon point - je suggère que les valeurs alpha inférieures à 1 sont acceptables pour les animations.
Le message du terminal indique:
UIVisualEffectView est invité à animer son opacité. Cela fera apparaître l'effet interrompu jusqu'à ce que l'opacité revienne à 1.
En lisant attentivement ceci, l'effet semblera rompu. Mes points à ce sujet étant:
- la rupture apparente n'a vraiment d'importance que pour une vue qui est persistante - ne change pas;
- une vue persistante / inchangée
UIVisualEffect
avec une valeur alpha inférieure à 1 ne sera pas présentée comme prévu / conçu par Apple; et
- le message dans le terminal n'est pas une erreur, juste un avertissement.
Pour étendre la réponse de @ jrturton ci-dessus qui m'a aidé à résoudre mon problème, j'ajouterais ...
Pour disparaître, UIVisualEffect
utilisez le code (Objective-C) suivant:
UIView.animateWithDuration(1.0, animations: {
// EITHER...
self.blurEffectView.effect = UIBlurEffect(nil)
// OR...
self.blurEffectView.alpha = 0
}, completion: { (finished: Bool) -> Void in
self.blurEffectView.removeFromSuperview()
} )
J'utilise avec succès les deux méthodes: définir la effect
propriété sur nil
et définir la alpha
propriété sur 0
.
Notez que le réglage de effect
sur nil
crée un "joli flash" (faute d'une meilleure description) à la fin de l'animation, tandis que le réglage de alpha
sur 0
crée une transition douce.
(Faites-moi savoir toute erreur de syntaxe ... j'écris en obj-c.)