2 UIBezierPath的绘制差异
Drawing differences of 2 UIBezierPath
我想绘制 2 个 UIBezierPath 之间的差异(参见屏幕截图)以便仅绘制圆角,如您在我的屏幕截图(图 C)中所见
这是我的代码:
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)
很遗憾,它不起作用。我只画圆角的黑色矩形。
你有什么想法吗?
非常感谢。
您可以使用一种路径:
let path = UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius)
path.append(UIBezierPath(rect: bounds))
path.usesEvenOddFillRule = true
UIColor.black.setFill()
path.fill()
或者您可以使用 CoreGraphics:
let path = UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius)
path.append(UIBezierPath(rect: bounds))
let context = UIGraphicsGetCurrentContext()!
context.addPath(path.cgPath)
context.setFillColor(UIColor.black.cgColor)
context.fillPath(using: .evenOdd)
结果:
请参阅此答案的 previous revision 以获得 Swift 2 版本。
我想绘制 2 个 UIBezierPath 之间的差异(参见屏幕截图)以便仅绘制圆角,如您在我的屏幕截图(图 C)中所见
这是我的代码:
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)
很遗憾,它不起作用。我只画圆角的黑色矩形。
你有什么想法吗?
非常感谢。
您可以使用一种路径:
let path = UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius)
path.append(UIBezierPath(rect: bounds))
path.usesEvenOddFillRule = true
UIColor.black.setFill()
path.fill()
或者您可以使用 CoreGraphics:
let path = UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius)
path.append(UIBezierPath(rect: bounds))
let context = UIGraphicsGetCurrentContext()!
context.addPath(path.cgPath)
context.setFillColor(UIColor.black.cgColor)
context.fillPath(using: .evenOdd)
结果:
请参阅此答案的 previous revision 以获得 Swift 2 版本。