Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone Programming: Applying Alpha to Parent but not to Child Views

Is it possible to set Alpha to .75 or .50 (transparent) for Parent view but the Child views/controls are opaque (Alpha channel 1.0 - completely visible).

Whenever i set Alpha of my main UIView to transparent, all the child views/controls are also shown as transparent. Is there any workaround?

like image 862
Mustafa Avatar asked Oct 17 '09 11:10

Mustafa


3 Answers

One simpler way is also possible without making the views siblings. Don't set the alpha directly on the parent view. Instead use

[parentView setBackgroundColor:[[UIColor clearColor] colorWithAlphaComponent:0.5]];

Now any child view can have its own color and will NOT be transparent.

In Swift, this would be

parentView.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.7)
like image 80
Abhinav Avatar answered Nov 14 '22 21:11

Abhinav


The parent that acts as your background should be changed to a sibling before the container that wraps your children. That way you can set the transparency without affecting the entire hierarchy.

This would look like this.

  • <item-container>
    • <item-background>
    • <children-container>
      • <children/>

This hierarchy, would have the same visibility order and let you set the opacity independently of the contents of the children container.

like image 27
John Leidegren Avatar answered Nov 14 '22 21:11

John Leidegren


I know this is a late answer, and something has already been accepted, but I found the best solution for me is not to set the UIView's transparency directly, but instead set it's background color to 0,0,0,0, making the color fully transparent.

like image 4
MarkPowell Avatar answered Nov 14 '22 20:11

MarkPowell