문제

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?

도움이 되었습니까?

해결책

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.

다른 팁

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)

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.

Not 100% sure what you are trying to do, but if you'd like to have a container view with a transparent background you can do so by setting the backgroundColor property to [UIColor clearColor]. That way you can see through the background, but all of the subviews will remain opaque. If you'd like the background to be semi-transparent just use [UIColor colorWithRed:green:blue:alpha:].

If you want the entire view to be semi-transparent while other views are not you'll have to make them siblings.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top