2016-11-21 4 views
0
 if !UIAccessibilityIsReduceTransparencyEnabled() { 
      self.blurOutletTop.backgroundColor = UIColor.clear 

      let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark) 

      let blurEffectView = UIVisualEffectView(effect: blurEffect) 
      blurEffectView.frame = self.blurOutletTop.bounds 
      blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

      self.view.addSubview(blurEffectView) 

      //self.logoOutlet.addSubview(blurEffectView) 

     } 
     else { 
      self.view.backgroundColor = UIColor.black 
     } 
    } 

J'ai une barre de navigation de taille UIView près du haut de mon écran. Le code ci-dessus ajoute un effet de flou. Ce que j'essaie de faire est d'ajouter mes boutons de navigation en haut de la vue afin qu'ils ne soient pas flous, mais faire cela juste à travers les résultats du story-board dans les boutons étant également floues.Ajout à une sous-vue vue floue

Je l'ai lu en ajoutant que subviews au blurEffectView les points de vente du bouton placerait les boutons sur le dessus, mais quand je décommentez

self.logoOutlet.addSubview(blurEffectView) 

la position du blurOutletTop est déplacé, l'arrière-plan du bouton est floue, mais la le texte de l'étiquette ne l'est pas, et le bouton lui-même est déplacé. J'ai essayé d'ajouter des contraintes et ça n'a pas aidé non plus.

Quelle est la meilleure façon d'obtenir mes boutons/images overtop de mon blurTopOutlet?

Répondre

1

Je suis sous-classé UIVisualEffectView dans le code, puis ajouté toutes sortes de contrôles subviews à elle. Très bel effet. Je ne sais pas si cela peut être fait à 100% via IB, mais en raison des attentes de la hiérarchie.

  • (1) Créer la vue "principale" dans IB et ajouter des contraintes. L'alternative ici est ce que j'ai fait, sous-classe UIVisualEffectView.
  • (2) Création de la vue « principaux » subviews dans le code, les ajouter à la vue « principale », et ajouter des contraintes dans le code.
  • (3) Puisque vous voulez certaines actions associées à certaines des sous-vues (les UIButtons), aussi être sûr de coder addTarget (cible: pour les appels :) pour eux.

AJOUTÉ EDIT: Vous pouvez faire la plupart de ceci par IB. Réglez tout, et comme les UIButtons sont des sous-vues de votre vue floue, essayez d'utiliser bringSubview (ToFront :). Si cela fonctionne, c'est probablement beaucoup plus facile! (Je suis de la vieille école et aime le codage des choses plus.)

0

au lieu d'ajouter le blurEffectView-logoOutlet:

logoOutlet.addSubview(blurEffectView) 

vous devez ajouter le logoOutlet-blurEffectView:

blurEffectView.contentView.addSubview(logoOutlet)