单视图层次结构中的UIView组透明度

7
我正在编写一个UI库,希望能够使UIView的alpha值像设置了UIViewGroupOpacity info.plist键一样。请参考以下链接:Make UIView and subviews translucent as one layer, not individuallyiOS controlling UIView alpha behaviour for subviews
但是,由于我正在编写一个库,我不希望项目必须设置此全局键,并影响主项目的行为。
有没有其他方法实现这个功能?我不想循环遍历所有子视图并设置每个子视图的alpha值,因为包含我的库的项目可能已启用此键...
2个回答

17

有的,您可以设置视图层的shouldRasterize属性。

containerView.layer.shouldRasterize = YES;
// Not setting rasterizationScale, will cause blurry images on retina displays:
containerView.layer.rasterizationScale = [[UIScreen mainScreen] scale];
这将产生与UIViewGroupOpacity相同的效果,但仅适用于containerView及其子视图。

如果superView是层次结构中的“超级视图”,这是否有效?在iOS 7中似乎没有任何影响。 - MobileVet

1

iOS 7.0及以上版本:

自iOS 7.0起,每个CALayer都可以通过allowsGroupOpacity属性进行单独控制。将其设置为YES,即可获得与设置UIViewGroupOpacity相同的行为,但仅适用于该特定图层。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接