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

DevDevDev picture DevDevDev · Dec 11, 2009 · Viewed 44k times · Source

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??

Answer

Ian Henry picture Ian Henry · Dec 11, 2009

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.