我正在编写一个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的项目可能启用了此键...
答案 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
时相同的行为,但仅针对该特定图层。