iOS如何使透明视图的子视图不透明?

问题描述:

我有一个视图作为另一个视图的子视图,然后我将父视图的alpha值设置为0.5,但这也使得子视图透明,即使它的alpha值设置为1也是如此。当父视图的alpha值小于1时子视图不透明(不透明)?iOS如何使透明视图的子视图不透明?

+1

如果有人能告诉我为什么我的问题被拒绝了,我在这里新到这里非常感谢!然后我可以在将来避免我的问题。 – axl411 2014-09-28 05:46:41

+1

@JoeBlow感谢您的详细回复! – axl411 2014-09-28 08:56:38

+0

不要忘记简单的解决办法是,不要让B成为那个视图的孩子A.让B成为拥有两者的“持有者”的孩子,但B的顶部。 – Fattie 2016-04-03 13:48:05

最接近你要得到的是colorWithAlphaComponent:。使用类似下面的内容,可以设置父视图背景的alpha分量,并且不会影响子视图。

[yourSuperview setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.5]]; 
+0

这解决了我的问题,thx! – axl411 2014-09-28 05:27:33

如果您将父视图设置为0.5,则所有子视图也将变为0.5或更小。你将不得不想出不同的设计方法。

您应该为父视图设计两种设计。一个是“启用”设计,将其显示为“已启用”设计,另一个将是“已禁用”设计,其中包含透明背景。

你不能用alpha来做到这一点,因为子视图会继承alpha。如果

parent.alpha = X

view.alpha = Y,

则视图的实际的α将是:

X * Y

+0

为什么这么复杂.. ??查看其他答案以获得更好的方法 – ATV 2014-09-28 09:58:28

我想,你已经创建了故事板视图。我已经面对这个问题。找到下面的代码,对我来说这是正确的。

[MyParentView setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.6]]; 

希望,这可能会帮助你。