我怎样才能有一个不透明的UIView作为一个半透明的UIView子视图?

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

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

不,不是。 你想要的是采取覆盖视图,并使其具有清晰的背景色。 作为新覆盖的子视图,您的视图将会变灰。 作为一个兄弟姐妹的观点,把你的看法,你希望是不透明的。

[OpaqueView] [DimmingView] | | [OverlayView] 

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

Objective-C的

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

这不是一样的:

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

Swift 3

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

Swift 2.3

 view.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.6) 

不要把它放在半透明的视图里面。 使它成为半透明视图的兄弟,并使用zsorting将其放在它上面。

这只有在背景上有任何图像时才有效。

而不是减lessUIViewalpha ,在该视图上添加一个UIImageView ,然后减lessUIImageView的alpha。

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

你的子视图将不再采用alpha属性.. 🙂

不,任何视图都会inheritance父级的不透明度。