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

时间:2012-05-11 07:48:57

标签: ios uiview

我正在编写一个UI库,我希望能够拥有UIViews的alpha,就像设置了UIViewGroupOpacity info.plist一样。请参阅以下链接:

Make UIView and subviews translucent as one layer, not individually

iOS controlling UIView alpha behaviour for subviews

但是,当我编写一个lib时,我不希望项目必须设置这个全局键,并影响主项目的行为。

有没有其他方法可以实现这一目标?我不想遍历所有子视图并设置每个子视图的alpha,因为包含我的lib的项目可能启用了此键...

2 个答案:

答案 0 :(得分:16)

是的,您可以设置视图图层的shouldRasterize

containerView.layer.shouldRasterize = YES;
// Not setting rasterizationScale, will cause blurry images on retina displays:
containerView.layer.rasterizationScale = [[UIScreen mainScreen] scale];

这与UIViewGroupOpacity具有相同的效果,但仅适用于containerView及其子视图。

答案 1 :(得分:0)

适用于iOS 7.0及更高版本:

从iOS 7.0开始,可以通过CALayer属性单独控制每个allowsGroupOpacity。通过将其设置为YES,您可以获得与设置UIViewGroupOpacity时相同的行为,但仅针对该特定图层。