iOS控制子视图的UIView阿尔法行为

在我的例子中,我有3个视图:一个包含两个白色视图的红色视图。 我将红色容器视图的alpha更改为0.3,发生这种情况(查看图像,当前结果)。

通过看这个,我只能假设 (告诉我,如果我错了)设置一个视图的alpha也会设置它的所有子视图的alpha。 我的问题是: 有没有办法简单地告诉红色视图作为一个整体,以便设置它的alpha将给出看起来像想要的结果(在图像中)?

结果

这就是没有任何alpha的情况:

在这里输入图像说明

查看Info.plist可能的UIKit键,特别是UIViewGroupOpacity

UIViewGroupOpacity (Boolean – iOS)指定Core Animation子层是否inheritance其超级层的不透明度。

Info.plist UIKit键

详细阐述Mark的答案:如果你在Info.plist中设置了UIViewGroupOpacity ,它将改变你的应用中所有视图的行为,如果你只想修复这个视图的渲染,你也可以使用这个代码片段:

 redContainerView.layer.shouldRasterize = YES; // No setting rasterizationScale, will cause blurry images on retina. redContainerView.layer.rasterizationScale = [[UIScreen mainScreen] scale]; 

IOS alpha属性是通过其子视图inheritance的。 如果我们为红色视图设置alpha 0.3,那么这两个子视图的alpha = 0.3。 没有办法阻止子视图从其超级视图inheritancealpha值。

解决办法可能是。 你可以用alpha 0.3来设置红色视图的颜色。 颜色属性不会被其子视图粘住。 你可以使用下面的代码

  [redView setBackgroundColor:[UIColor colorWithHue:238.0f/255.0f saturation:24.0f/255.0f brightness:24.0f/255.0f alpha:0.3]];