问题
I have two bezier paths that i'd like to combine to form a union, so that I can stroke the entire outer shape. In my case, it's a speech bubble with a tail, so although it's not a complex shape it would actually be quite hard to create it using one single path.
There doesn't appear to be a Core Graphics API for creating unions. Am I wrong?
If I'm not, does anyone know of a library that can handle this? I've search GitHub to no avail.
回答1:
UIBezierPath does that if you are working with closed shapes.
UIBezierPath *firstPath = [UIBezierPath bezierPath];
// build your path
UIBezierPath *secondPath = [UIBezierPath bezierPath];
// build your path
[firstPath appendPath:secondPath];
回答2:
In Swift 3 Bezier paths can be unified by:
override func draw(_ rect: CGRect) {
super.draw(rect)
UIColor.black.setStroke()
UIColor.red.setFill()
let currentContext = UIGraphicsGetCurrentContext()
currentContext?.saveGState()
let path = drawTopView()
path.lineWidth = 5.0
path.fill()
path.stroke()
let middlepath = drawMiddleView()
middlepath.lineWidth = 2.0
middlepath.fill()
middlepath.stroke()
path.append(middlepath)
currentContext?.restoreGState()
}
来源:https://stackoverflow.com/questions/19178360/creating-a-union-of-2-bezier-paths