iOS控制子视图的UIView alpha行为

Lou*_*oux 24 alpha uiview ios

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

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

结果

这是没有任何alpha的情况:

在此输入图像描述

Tor*_*ten 20

详细说明Mark的答案:如果您UIViewGroupOpacity在Info.plist中进行设置,它将更改您应用中所有视图的行为,如果您只想修复此特定视图的呈现,您还可以使用以下代码段:

redContainerView.layer.shouldRasterize = YES;
// No setting rasterizationScale, will cause blurry images on retina.
redContainerView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
Run Code Online (Sandbox Code Playgroud)


小智 14

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

解决方案可能是.您可以使用alpha 0.3设置红色视图的颜色.颜色属性不会受其子视图的影响.你可以使用下面的代码

[redView setBackgroundColor:[UIColor colorWithHue:238.0f/255.0f saturation:24.0f/255.0f brightness:24.0f/255.0f alpha:0.3]];
Run Code Online (Sandbox Code Playgroud)

  • 绝对是最佳答案。颜色具有 Alpha 且视图具有 Alpha 的概念非常重要,每个概念都有不同的行为。 (2认同)

Mar*_*ams 12

请查看Info.plist可能的UIKit密钥UIViewGroupOpacity.

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

Info.plist UIKit Keys