web-dev-qa-db-fra.com

Opacité rapide d'UIView par programme

J'ai beaucoup de mal à jouer avec les propriétés d'UIView pour obtenir par programmation un look opaque souhaité, qui peut être facilement réalisé via Storyboard et l'Inspecteur des attributs.

Ce que je veux recréer (paramètres à partir de l'inspecteur d'attributs): un UIView noir à l'opacité atténuée.

Ce que j'ai essayé par programme:

1)  view.backgroundColor = .black
    view.alpha = 0.75

2)  view.backgroundColor = UIColor.black.withAlphaComponent(0.75)
    view.isOpaque = true

Ci-joint une image de UIView sélectionné dans Storyboard avec les paramètres à voir. Si vous avez besoin d'informations supplémentaires, n'hésitez pas à me le faire savoir. Merci beaucoup pour votre aide.

Screenshot of Storyboard + attributes inspector

UPDATE: Merci pour toutes vos contributions. La combinaison des explications de Clever Error sur les couches de vues et du code de Matt m'a permis de réaliser le look souhaité. 

Interface utilisateur souhaitée Look!

7
iMoment

Ce que vous décrivez est:

view.backgroundColor = UIColor.black.withAlphaComponent(0.75)
view.isOpaque = false

La vue ne doit pas être marquée opaque, car elle n'est pas opaque.

11
matt

Vous pouvez définir l'opacité pour afficher comme ci-dessous dans Swift 3

view.alpha = CGFloat(0.1)
5
gencaysahinn

Lorsque votre application est exécutée, la hiérarchie des vues sera

UIWindow
    UINavigationControllers view
        Your View Controllers View

Le problème est que UIWindow est noir par défaut et que la vue UINavigationControllers est claire. Donc, il finit par mélanger votre couleur noire transparente avec du noir complet pour obtenir juste le noir.

Vous devez ajouter une autre vue en noir transparent à votre contrôleur de vue, puis définir la couleur de la vue des contrôleurs de vue sur celle avec laquelle vous souhaitez fondre.

0
Craig Siemens

Résumer ces réponses https://stackoverflow.com/a/40405424/7767664 , https://stackoverflow.com/a/46669162/7767664

pour UIView lui-même l'opacité

view.isOpaque = false
view.alpha = CGFloat(0.5)

pour l'opacité de l'arrière-plan UIView

view.backgroundColor = UIColor.black.withAlphaComponent(0.5)
view.isOpaque = false
0
user924