如何将不透明的UIView作为半透明UIView的子视图?

时间:2011-05-24 14:40:54

标签: iphone ios ipad

我有一个alpha为0.5的UIView,我将其作为子视图添加到我的主视图中,以便灰显其他所有内容。我想在这个灰色的UIView中添加一个额外的UIView作为子视图 - 问题是当我这样做时,我新添加的子视图也是部分透明的。

有没有办法让子视图“忽略”其超级视图的alpha值并且本身完全不透明?

5 个答案:

答案 0 :(得分:110)

直接设置UIView背景颜色alpha而不是alpha。

<强>目标C

UIView *view;
...
view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:.6];

它与:

不一样
view.backgroundColor = [UIColor blackColor];    
view.alpha = .6;

<强>夫特

view.backgroundColor = UIColor.black.withAlphaComponent(0.6)

答案 1 :(得分:12)

不,不是真的。你想要的是采取叠加视图,并使其具有清晰的背景颜色。作为新叠加层的子视图,您的视图会使您的视图变得灰暗。而作为兄弟姐妹的观点,你的观点就是不透明的。

[OpaqueView] [DimmingView]
     |             |
      [OverlayView]

答案 2 :(得分:2)

请勿将其放在半透明视图中。使它成为半透明视图的兄弟,并使用z-ordering将其放在上面。

答案 3 :(得分:2)

只有在背景上有任何图片时才会有效。

不是缩小alpha的{​​{1}},而是在该视图上添加UIView,然后减少UIImageView的alpha。

现在在UIImageView上添加您的子视图。

您的子视图将不再使用alpha属性.. :))

答案 4 :(得分:1)

不,任何视图都会继承其父级的不透明度。