ios - 如何在 iOS 中屏蔽 UIView

标签 ios uiview mask

我见过类似的问题,但没有找到可行的答案。

我想使用灰色图像遮盖 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/

相关文章:

ios - Xcode 6.1 中的 Mach-O 链接器错误

ios - 在没有 Storyboard 的情况下在 UIView 中添加 UICollectionView

ios - MapKit MKCircle 在缩放级别上更改半径

iOS - 从 XIB 文件引用并以编程方式移动 View

ios - 使用 .xib 和支持类初始化 UIView 的正确方法

css - 使用::after 伪元素重复 SVG 模式作为边框的剪辑路径

html - 如何在 HTML 对象上创建掩码?

ios - 日期未保存到核心数据对象

ios - 如何在不手动计算偏移量的情况下以编程方式堆叠 View ?

svg - 如何在SVG中的掩码后应用过滤器?