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...
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With