DevDevDev
DevDevDev

Reputation: 5177

100% opacity UILabel over a 50% opacity background (UIView?)

So right now I have a UIView with a UILabel in it. I want the background to have an opacity < 1.0 and the label to have an opacity of 1.0. However since alphas propagate down the view hierarchy, the label ends up with an opacity < 1.0 as well.

Is there anyway to do what I want without making the UILabel a subview of another view??

Upvotes: 56

Views: 45709

Answers (4)

Ian Henry
Ian Henry

Reputation: 22403

Just set the background color to be semitransparent:

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

Or, in Swift:

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

Or, Swift 3:

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

Note that, in this particular case, UIColor(white: 0, alpha: 0.5) is more concise, but colorWithAlphaComponent will work in general.

Upvotes: 206

Ja͢ck
Ja͢ck

Reputation: 173572

Besides being available in code, you can do this quite easily from iB as well:

  1. Within the storyboard, select the view you wish to edit;
  2. From the right panel, make sure the Attributes inspector is opened;
  3. Click on the right side of the "Background" drop down box and choose "Other ..."; it will open a colour picker dialog;
  4. Change the "Opacity" at the bottom to set the background colour opacity.

Upvotes: 13

amedc111
amedc111

Reputation: 39

You can use this:

self.view.layer.opacity=0.5

Upvotes: -5

Colin Gislason
Colin Gislason

Reputation: 5589

You can set the background color of the UIView with a semi-transparent color or make the image itself semi-transparent. This way it's a property of the view that is transparent, not the view itself.

Upvotes: 0

Related Questions