UIView group opacity in single view heirachy

2019-02-09 18:29发布

I am writing a UI library in which i would like to be able to have the alpha of the UIViews as if the UIViewGroupOpacity info.plist ket was set. See following links:

Make UIView and subviews translucent as one layer, not individually

iOS controlling UIView alpha behaviour for subviews

But, as I am writing a lib, I dont want the projects to have to set this global key, and effect the behaviour of the main project.

Is there any other way of achieving this? I dont want to cycle through all the subviews and set alpha of each subview, as the project that includes my lib might have this key enabled...

标签: ios uiview
2条回答
三岁会撩人
2楼-- · 2019-02-09 18:52

For iOS 7.0 and later:

Since iOS 7.0, this can be controlled for each CALayer individually through the allowsGroupOpacity property. By setting it to YES, you get the same behavior as if UIViewGroupOpacity was set, but just for that particular layer.

查看更多
三岁会撩人
3楼-- · 2019-02-09 18:57

Yes there is, you can set shouldRasterize of the view's layer.

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

This will have the same effect as UIViewGroupOpacity but only for containerView and it's subviews.

查看更多
登录 后发表回答