2016-04-06 3 views
4

Das Ziel: Erstellen Sie eine Unschärfeansicht in der App.Verwenden Sie UIVisualEffectView, um eine Unschärfeansicht zu erstellen, die im Simulator aber nicht auf iphone & ipad korrigiert wird.

Der Code ich benutze:

func createBlurBackgroundView() 
{ 
    if !UIAccessibilityIsReduceTransparencyEnabled() 
    { 
     if blurredSubView == nil || blurredSubView.superview == nil 
     { 
      print("Create blurred background view") 
      self.backgroundColor = UIColor.clearColor() 
      let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light) 
      blurredSubView = UIVisualEffectView(effect: blurEffect) 
      blurredSubView.frame = self.bounds 
      self.insertSubview(blurredSubView, atIndex: 0) 
     } 
    } 
    else 
    { 
     print("Transparency disabled!! no blur view") 
    } 
} 

Das Ergebnis: alles funktioniert auf dem Simulator fein:

enter image description here

Aber wenn ich es auf dem iPhone und ipads lief, es sieht aus wie : enter image description here

BITTE BEACHTEN SIE, ICH HABE NICHT DIE "TRANSPARENZ REDUZIEREN" ÄNDERT " DIE EINSTELLUNGEN!

Wenn ich dann einen Schnappschuss von diesem schwarzen Hintergrund ohne Unschärfe machen möchte, rate mal was ?! Im Fotostream sah ich genau das richtige Unschärfebild ...

Auch wenn ich Doppelklick auf Home-Taste, und schaue auf die Multi-Task-Schnittstelle, sah ich die Unschärfe-Ansicht-Effekt!

enter image description here

Mehr Info: ich iphone6s verwenden, ipad air2, beide iOS 9.3.1 Xcode Version 7.3

Ich bin so müde zu versuchen, dieses Problem zu lösen, habe ich versucht, andere Methoden wie Snapshot-image nehmen und dann Unschärfe-Effekt auf das Bild anwenden, hat aber andere Bugs und andere CONs

+0

Haben Sie überprüft, was 'UIAccessibilityIsReduceTransparencyEnabled()' zurückgibt? – Jelly

+0

@jelly Ja, bitte überprüfen Sie meinen Code, es gibt Druckinformationen, und ich überprüfte auch die Einstellungen –

+0

Wo rufst du 'createBlurBackgroundView()'? – Jelly

Antwort

4

UIVisualEffectView tut nicht mit SpriteKit arbeiten. Ich weiß nicht, was sie hinten anders machen, wenn jemand das weiß, bitte befreie die Antwort. Meine Vermutung ist, dass die zugrunde liegende Implementierung verschiedene APIs verwendet, die nicht zusammen arbeiten. Der Simulator führt alle möglichen Tricks aus, um das tatsächliche Gerät zu simulieren, damit sie im Hintergrund etwas anderes verwenden können als die echten Geräte und deshalb funktioniert es am Simulator.

0

nehmen Sie self.backgroundColor = UIColor.clearColor().

Verwandte Themen