我有一个视图作为另一个视图的子视图,然后我将父视图的alpha值设置为0.5,但这也使得子视图透明,即使它的alpha值设置为1。那么当父视图的alpha值小于1时,如何使子视图不透明(不透明)?
colorWithAlphaComponent:
。使用以下类似的代码,您可以设置父视图背景的alpha组件,而不会影响子视图。[yourSuperview setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.5]];
如果您将父视图设置为0.5,则所有子视图也将降至0.5或更低的值。您需要采用不同的设计方法。
self.yoursuperview.backgroundColor = UIColor.black.withAlphaComponent(0.5)
superView.backgroundColor = .clear
现在,父视图的alpha属性没有改变,它不会影响其子视图的alpha。因此,如果您为子视图设置了背景颜色,子视图将是不透明的。
我想你是通过Storyboard创建了视图。我之前也遇到过这个问题。请查看下面的代码,这在我的情况下是正确的。
[MyParentView setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.6]];
希望这能对你有所帮助。
对于父视图,您应该有两个设计。一个是“启用”设计,显示它本来的样子;另一个是“禁用”设计,其中包含透明背景。
您不能使用alpha来实现这一点,因为子视图会继承alpha。如果
parent.alpha = x
和
view.alpha = y,则视图的实际alpha将为:
x * y