如何根据它的父母的alpha来制作UIView的子视图'alpha变化?

时间:2014-08-06 20:44:45

标签: ios uiview storyboard

我无法设置某些子视图的alpha值。

使用Storyboard,我的视图控制器中有一个UIView,viewAsubView1subView2,& subView3作为viewA内的子视图。

当我将viewA的alpha更改为0.5时,viewA的alpha变化,但它的子视图'alphas保持不变。

默认情况下,根据它的父母,不应该是子视图的alpha变化吗?我究竟做错了什么?

4 个答案:

答案 0 :(得分:4)

你走了:

self.view.layer.allowsGroupOpacity = YES; 

这适用于所有子视图,子视图的子视图以及所有这些。

来自文档:

 * The default value of the property is read from the boolean
 * UIViewGroupOpacity property in the main bundle's Info.plist. If no
 * value is found in the Info.plist the default value is YES for
 * applications linked against the iOS 7 SDK or later and NO for
 * applications linked against an earlier SDK. */

您的项目可能未与iOS 7 SDK相关联。如果您希望此更改适用于所有视图,我会这样做:

  • 转到.plist
  • 添加标题为“使用组不透明度渲染”
  • 的行
  • 将其设为YES

来自Apple的文档:

UIViewGroupOpacity
“Renders with group opacity”
Specifies whether Core Animation layers inherit the opacity of their superlayer. See “UIViewGroupOpacity” for details.
iOS 3.0 and later

答案 1 :(得分:0)

subView1.alpha = subView1.superview.alpha怎么样?

答案 2 :(得分:0)

答案 3 :(得分:0)

查看allowsGroupOpacity,可以在图层上设置。还有一个全局info.plist键,用于在应用程序范围内更改此行为。

  

当UIViewGroupOpacity键不存在时,默认值为   现在是的。默认值以前是NO。

     

这意味着透明视图的子视图将首先出现   合成到透明视图,然后是预先复合的子树   将作为一个整体绘制到背景上。 NO设置导致   更便宜,但也更不准确,合成:每个视图中   透明子树被合成到它下面的内容上   在普通画家的算法顺序中,父母的不透明度

https://developer.apple.com/library/ios/releasenotes/General/RN-iOSSDK-7.0/index.html