绘制2 UIBezierPath的差异

时间:2016-08-10 20:56:11

标签: swift core-graphics uibezierpath

我想在2 UIBezierPath之间绘制差异(见截图),以便只绘制圆角,就像我在屏幕截图中看到的那样(图C)

enter image description here

这是我的代码:

let context = UIGraphicsGetCurrentContext()
CGContextSaveGState(context)

let rectanglePath = UIBezierPath(rect: rect)
CGContextAddPath(context, rectanglePath.CGPath)
CGContextEOClip(context)

let roundedRectanglePath = UIBezierPath(roundedRect: productRect, byRoundingCorners: roundedCorners, cornerRadii: CGSize(width: 6, height: 6))
CGContextAddPath(context, roundedRectanglePath.CGPath)
CGContextFillPath(context)

CGContextRestoreGState(context)

不幸的是它不起作用。我只绘制圆角黑色矩形。

你有什么想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:6)

您可以使用一条路径:

let path = UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius)
path.appendPath(UIBezierPath(rect: bounds))
path.usesEvenOddFillRule = true

UIColor.blackColor().setFill()
path.fill()

或者您可以使用CoreGraphics:

let path = UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius)
path.appendPath(UIBezierPath(rect: bounds))

let context = UIGraphicsGetCurrentContext()
CGContextAddPath(context, path.CGPath)
CGContextSetFillColorWithColor(context, UIColor.blackColor().CGColor)
CGContextEOFillPath(context)

产量:

enter image description here