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.
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é.
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.
Vous pouvez définir l'opacité pour afficher comme ci-dessous dans Swift 3
view.alpha = CGFloat(0.1)
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.
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