UIView 图层未正确屏蔽

Posted

技术标签:

【中文标题】UIView 图层未正确屏蔽【英文标题】:UIView layer not masking correctly 【发布时间】:2013-06-20 23:55:24 【问题描述】:

我想创建一个在左上角和右上角都有圆角的 UIView。

为了做到这一点,我想用 CAShapeLayer 屏蔽 UIView。

这是我正在使用的代码:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.menuContainerView.bounds
                                               byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight
                                                     cornerRadii:CGSizeMake(20.0, 20.0)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.menuContainerView.bounds;
maskLayer.path = maskPath.CGPath;

self.menuContainerView.layer.mask = maskLayer;

但是,当我运行此代码时,掩码似乎无效。有什么想法为什么不呢?

【问题讨论】:

【参考方案1】:

我在回答中没有提到的是,我还将与蒙版相同的 maskLayer 设置到另一个视图(一个屏幕外)。显然你不能这样做....我删除了多余的行

self.otherContainerView.layer.mask = maskLayer;

它按预期工作。

【讨论】:

对于遮罩,路径只能用于一个视图。如果您想在多个视图上使用它,您可以重新制作路径(即使使用相同的变量),然后将其添加到另一个视图。我也发现了这一点。

以上是关于UIView 图层未正确屏蔽的主要内容,如果未能解决你的问题,请参考以下文章

正确删除带有渐变的图层

要素图层未出现在打印结果中

Google 地图 - KML 图层未出现在地图上

SQL Server 中的图层未加载到地理服务器中

地理服务器中的图层未显示在 OpenLayers 中

如何更新 UIView 的图层属性并为其子视图保留图层?