iPhone编程:将Alpha应用于父级但不应用于子视图

时间:2009-10-17 11:27:29

标签: iphone uiview alpha

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

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

4 个答案:

答案 0 :(得分:71)

在不制作兄弟姐妹的情况下,也可以采用一种更简单的方法。不要直接在父视图上设置alpha。而是使用

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

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

在Swift中,这将是

parentView.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.7)

答案 1 :(得分:29)

作为背景的父母应该在包装孩子的容器之前更改为兄弟姐妹。这样,您可以设置透明度而不会影响整个层次结构。

这看起来像这样。

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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

如果您希望整个视图都是半透明的,而其他视图则不是,那么您必须让它们成为兄弟姐妹。