在Rect中反向CGPath

时间:2013-11-17 17:41:57

标签: ios sprite-kit cgpath

我想要反转一个CGPath(相对于一个Rect)。通过这个,我的意思是我定义了一个CGPath,我希望得到一个CGPath,概述了矩形中的所有其他区域。

我一直在尝试不同的方式,现在谷歌搜索几天没有运气。我只是无法解决它!

考虑以下带定义CGPath的矩形(其中绿色是定义的CGPath填充的):

enter image description here

现在,我想要的东西(倒置的CGPath)会产生以下内容:

enter image description here

具体来说,这是为了在SpriteKit框架中使用SKCropNodeSKPhysicsBody,但是我使用CGPaths为掩码节点生成多边形(并将路径存储在一个ivar)。

可能会以某种方式反转CGPath吗?如果是这样,怎么样?

提前致谢。

2 个答案:

答案 0 :(得分:5)

我复制了@DavidRonnqvist链接到的答案中的代码,但是将其更改为从CGPath中检索UIBezierPath,这就是您所需要的:

CGPath        filledPath = ...; //This is the inner filled shape
CAShapeLayer *invertedLayer = [CAShapeLayer layer];
UIBezierPath *maskPath = [UIBezierPath bezierPathWithCGPath:filledPath];

[invertedLayer setPath:[maskPath CGPath]];
[invertedLayer setFillRule:kCAFillRuleEvenOdd];
[invertedLayer setFillColor:[[UIColor colorOfYourChoice] CGColor]];

我没有对此进行测试,但理论上它应该可行。

答案 1 :(得分:0)

代码示例,使用this.$route.push

window.location.href