iOS控制子视图的UIView alpha行为

时间:2011-12-20 21:07:14

标签: ios uiview alpha

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

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

results

这是没有任何alpha的样子:

enter image description here

3 个答案:

答案 0 :(得分:20)

详细说明Mark的回答:如果在Info.plist中设置UIViewGroupOpacity,它将改变应用中所有视图的行为,如果您只想修复此特定视图的渲染,那么也可以使用这个片段:

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

答案 1 :(得分:14)

iOS alpha属性由其子视图继承。如果我们为红色视图设置alpha 0.3,那么两个子视图将具有alpha = 0.3。没有办法阻止子视图从超级视图继承其alpha值。

解决方案可能是设置红色视图的颜色,其alpha值为0.3。 color属性不会被其子视图继承。

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

答案 2 :(得分:12)

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

  

UIViewGroupOpacity (Boolean - iOS)指定是否为Core Animation   子图层继承了超级图层的不透明度。

Info.plist UIKit Keys