我见过类似的问题,但没有找到可行的答案。
我想使用灰色图像遮盖 UIView(需要转换为 alpha 比例以进行遮盖)。 UIView 有背景。屏蔽图像应该很容易,但我想屏蔽任何 UIView。
任何线索将不胜感激。
最佳答案
我已经研究了这个问题几个小时,并且找到了一个我认为可以满足您要求的解决方案。首先,使用您认为合适的任何方式创建掩蔽图像。请注意,我们在这里只需要 alpha 值,所有其他颜色将被忽略,因此请确保您使用的方法支持 alpha 值。在此示例中,我从 .png 文件加载,但不要尝试使用 .jpg 文件,因为它们没有 alpha 值。
接下来,创建一个新层,将 mask 分配给它的内容,并将这个新层设置为 UIView 自己的层,如下所示:您应该会发现这 mask 了 UIView 及其所有附加的 subview :
UIImage *_maskingImage = [UIImage imageNamed:@"mask"];
CALayer *_maskingLayer = [CALayer layer];
_maskingLayer.frame = theView.bounds;
[_maskingLayer setContents:(id)[_maskingImage CGImage]];
[theView.layer setMask:_maskingLayer];
完成此操作后,您可以将 UIView 的背景颜色设置为您喜欢的任何颜色, mask 将用于创建彩色滤镜。
编辑:从 iOS8 开始,您现在可以通过将另一个 View 分配给其 maskView 属性来简单地屏蔽 View 。一般规则保持不变,因为 maskView 的 alpha 层用于确定应用它的 View 的不透明度。
关于ios - 如何在 iOS 中屏蔽 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4559743/