多个bezierpaths掩盖视图上的路径

时间:2017-02-25 06:18:33

标签: objective-c mask uibezierpath

如何在单个视图中绘制多个遮罩层,这是我正在使用的代码,但只有一个遮罩层正在处理剩余的路径。 一次传递一个路径并调用循环它只是保留最后一个路径掩码删除其余部分。

- (void)setClippingPath:(UIBezierPath *)clippingPath andView:(UIView *)view;
{
    if (![[view layer] mask])
        [[view layer] setMask:[CAShapeLayer layer]];

    [(CAShapeLayer*) [[view layer] mask] setPath:[clippingPath CGPath]];
}

1 个答案:

答案 0 :(得分:1)

经过一番研究后,我解决了你的问题。我做了以下。首先,我声明了一个实例变量- (void)setClippingPath:(UIBezierPath *)clippingPath andView:(UIView *)view; { if (![[view layer] mask]) { [[view layer] setMask:[CAShapeLayer layer]]; } if (resultingPath) { [resultingPath appendPath:clippingPath]; [(CAShapeLayer*) [[view layer] mask] setPath:[resultingPath CGPath]]; } } 。此变量将在您的方法中用于附加传入路径。

- (IBAction)resetMask:(id)sender {
      UIBezierPath *hole = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
      [self setClippingPath:hole andView:[self view]];
      resultingPath = [UIBezierPath bezierPath];
  }

我测试了这个并且它有效!

如果你喜欢tor重置这个男人,经过一些研究我发现了这个解决方案:

coords = np.asarray([
    [6.74219, -53.57835],
    [6.74952, -53.57241],
    [6.75652, -53.56289],
    [6.74756, -53.56598],
    [6.73462, -53.57518]])

希望它有所帮助。