我无法设置某些子视图的alpha值。
使用Storyboard,我的视图控制器中有一个UIView,viewA
,subView1
,subView2
,& subView3
作为viewA
内的子视图。
当我将viewA
的alpha更改为0.5时,viewA
的alpha变化,但它的子视图'alphas保持不变。
默认情况下,根据它的父母,不应该是子视图的alpha变化吗?我究竟做错了什么?
答案 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相关联。如果您希望此更改适用于所有视图,我会这样做:
来自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