32

是否可以将父视图的 Alpha 设置为 .75 或 .50(透明),但子视图/控件是不透明的(Alpha 通道 1.0 - 完全可见)。

每当我将主 UIView 的 Alpha 设置为透明时,所有子视图/控件也显示为透明。有什么解决方法吗?

4

4 回答 4

77

一种更简单的方法也可以在不使视图同级的情况下实现。不要直接在父视图上设置 alpha。而是使用

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

现在任何子视图都可以有自己的颜色并且不会是透明的。

在 Swift 中,这将是

parentView.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.7)
于 2010-07-10T04:35:23.593 回答
30

充当背景的父级应在包装您的子级的容器之前更改为兄弟级。这样您就可以在不影响整个层次结构的情况下设置透明度。

这看起来像这样。

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

此层次结构将具有相同的可见性顺序,并允许您独立于子容器的内容设置不透明度。

于 2009-10-17T11:34:04.293 回答
4

我知道这是一个迟到的答案,并且已经接受了一些东西,但我发现对我来说最好的解决方案不是UIView直接设置 的透明度,而是将它的背景颜色设置为 0,0,0,0,使颜色完全透明。

于 2010-06-11T15:10:04.540 回答
2

不是 100% 确定您要做什么,但是如果您想要一个具有透明背景的容器视图,您可以通过将 backgroundColor 属性设置为 [UIColor clearColor] 来实现。这样你就可以看穿背景,但所有的子视图都将保持不透明。如果您希望背景是半透明的,只需使用 [UIColor colorWithRed:green:blue:alpha:]。

如果您希望整个视图是半透明的,而其他视图不是,则必须将它们设为兄弟。

于 2009-10-17T17:25:36.503 回答