我有一个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顺序将其放置在其上。
只有当背景上有任何图像时,这才会起作用
与其减少UIView
的alpha
,不如在该视图上添加UIImageView
,然后减少UIImageView
的alpha。
现在在UIView
上添加您的子视图。
您的子视图将不再使用alpha属性..:)
否,任何视图都将继承其父视图的不透明度。