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



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

有没有什么方法可以让子视图"忽略"其超视图的alpha值,并使其自身完全不透明?

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

Objective-C

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

这与不同

view.backgroundColor = [UIColor blackColor];    
view.alpha = .6;

Swift

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

不,不是真的。你想要的是你的叠加视图,并使其只有一个清晰的背景色。作为新覆盖层的子视图,放置将使事物变灰的视图。作为一个兄弟视图,你的视图是不透明的。

[OpaqueView] [DimmingView]
     |             |
      [OverlayView]

不要把它放在半透明视图中。使其成为半透明视图的同级视图,并使用z顺序将其放置在其上。

只有当背景上有任何图像时,这才会起作用

与其减少UIViewalpha,不如在该视图上添加UIImageView,然后减少UIImageView的alpha。

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

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

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

最新更新