In der Apple-Dokumentation heißt es (derzeit) ...
Vermeiden Sie bei Verwendung der UIVisualEffectView-Klasse Alpha-Werte, die kleiner als 1 sind.
und
Wenn Sie das Alpha in der visuellen Effektansicht oder einer der Übersichtsansichten auf weniger als 1 einstellen, sehen viele Effekte falsch aus oder werden überhaupt nicht angezeigt.
Ich glaube, hier fehlt ein wichtiger Kontext ...
Ich würde vorschlagen, dass die Absicht darin besteht, Alpha-Werte zu vermeiden, die für eine dauerhafte Ansicht kleiner als 1 sind. Meiner bescheidenen Meinung nach gilt dies nicht für die Animation einer Ansicht.
Mein Punkt - Ich würde vorschlagen, dass Alpha-Werte unter 1 für Animationen akzeptabel sind.
Die Terminalnachricht lautet:
UIVisualEffectView wird aufgefordert, seine Deckkraft zu animieren. Dadurch wird der Effekt unterbrochen, bis die Deckkraft auf 1 zurückkehrt.
Wenn Sie dies sorgfältig lesen, scheint der Effekt unterbrochen zu sein. Meine Punkte zu diesem Wesen:
- Die offensichtliche Unterbrechung ist nur für eine Ansicht von Bedeutung, die hartnäckig ist - sich nicht ändert.
- Eine dauerhafte / unveränderliche
UIVisualEffect
Ansicht mit einem Alpha-Wert von weniger als 1 wird nicht wie von Apple beabsichtigt / entworfen angezeigt. und
- Die Nachricht im Terminal ist kein Fehler, sondern nur eine Warnung.
Um die Antwort von @ jrturton oben zu erweitern, die mir bei der Lösung meines Problems geholfen hat, würde ich hinzufügen ...
UIVisualEffect
Verwenden Sie zum Ausblenden den folgenden Code (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()
} )
Ich verwende erfolgreich beide Methoden: Setzen der effect
Eigenschaft auf nil
und Setzen der alpha
Eigenschaft auf 0
.
Beachten Sie, dass durch Setzen von effect
to nil
am Ende der Animation ein "schöner Blitz" (aus Mangel an einer besseren Beschreibung) erzeugt wird , während durch Setzen von alpha
to 0
ein reibungsloser Übergang erzeugt wird.
(Lassen Sie mich alle Syntaxfehler wissen ... Ich schreibe in obj-c.)