web-dev-qa-db-fra.com

100% d'opacité UILabel sur un fond d'opacité de 50% (UIView?)

Donc en ce moment j'ai un UIView avec un UILabel dedans. Je veux que l'arrière-plan ait une opacité <1.0 et que l'étiquette ait une opacité de 1.0. Cependant, puisque les alphas se propagent dans la hiérarchie des vues, l'étiquette se retrouve également avec une opacité <1,0.

Est-il possible de faire ce que je veux sans faire de UILabel une sous-vue d'une autre vue ??

55
DevDevDev

Définissez simplement la couleur d'arrière-plan pour qu'elle soit semi-transparente:

view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.5f];

Ou, dans Swift:

view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.5)

Ou, Swift 3:

view.backgroundColor = UIColor.black.withAlphaComponent(0.5)

Notez que, dans ce cas particulier, UIColor(white: 0, alpha: 0.5) est plus concis, mais colorWithAlphaComponent fonctionnera en général.

206
Ian Henry

En plus d'être disponible en code, vous pouvez également le faire facilement depuis iB:

  1. Dans le storyboard, sélectionnez la vue que vous souhaitez modifier;
  2. Dans le panneau de droite, assurez-vous que l'inspecteur des attributs est ouvert;
  3. Cliquez sur le côté droit de la liste déroulante "Arrière-plan" et choisissez "Autre ..."; il ouvrira une boîte de dialogue de sélection de couleur;
  4. Modifiez l '"Opacité" en bas pour définir l'opacité de la couleur d'arrière-plan.
13
Ja͢ck

Vous pouvez définir la couleur d'arrière-plan du UIView avec une couleur semi-transparente ou rendre l'image elle-même semi-transparente. De cette façon, c'est une propriété de la vue qui est transparente, pas la vue elle-même.

0
Colin Gislason