2016-04-06 1 views
4

L'objectif: créer une vue floue dans l'application.utiliser UIVisualEffectView pour créer une vue de flou, corriger sur le simulateur mais pas sur iphone & ipad

Le code que j'utilise:

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") 
    } 
} 

Le résultat: tout fonctionne bien sur le simulateur:

enter image description here

Mais quand je l'ai couru sur l'iPhone et iPad, il ressemble : enter image description here

VEUILLEZ NOTER QUE JE N'A PAS CHANGÉ LA "TRANSPARENCE DE RÉDUCTION" " PARAMÈTRES!

Ensuite, quand je veux prendre un instantané de ce fond noir sans flou, devinez quoi ?! dans le flux de photos, j'ai vu exactement la bonne image flou vue ...

Aussi, quand j'ai double-cliqué sur le bouton d'accueil, et regarde l'interface multi-tâches, j'ai vu l'effet de vue flou!

enter image description here

Plus d'info: J'utilise iphone6s, ipad, air2 iOS 9.3.1 version Xcode 7.3

Je suis tellement fatigué à essayer de résoudre ce problème j'ai essayé d'autres méthodes comme prendre l'image de l'instantané et appliquez effet de flou sur l'image, mais a d'autres bugs et autres

+0

Avez-vous vérifié ce que renvoie UIAccessibilityIsReduceTransparencyEnabled() '? – Jelly

+0

@ jelly oui, s'il vous plaît vérifier mon code, il ya des informations d'impression, et j'ai également vérifié les paramètres –

+0

Où appelez-vous 'createBlurBackgroundView()'? – Jelly

Répondre

4

UIVisualEffectView-t ne fonctionne pas avec SpriteKit. Je ne sais pas ce qu'ils font différemment dans le dos, si quelqu'un sait s'il vous plaît n'hésitez pas à modifier la réponse. Je suppose que l'implémentation sous-jacente utilise différentes API qui ne fonctionnent pas ensemble. Le simulateur fait toutes sortes de trucs pour simuler le dispositif réel afin qu'ils puissent utiliser quelque chose de différent à l'arrière que les vrais appareils et c'est pourquoi il fonctionne sur un simulateur.

0
INCONVÉNIENTS

Sortez self.backgroundColor = UIColor.clearColor().