Search code examples
iosswiftswift3uibezierpath

Two UIBezierPaths intersection as a UIBezierPath


I have two UIBezierPaths, one that represents the polygon of part of an image and the other is a path to be drawn on top of it.

I need to find the intersection between them so that only the point that are inside this intersection area will be colored.

Is there a method in UIBezierPath that can find intersection points - or a new path - between two paths ?


Solution

  • I wrote a UIBezierPath library that will let you cut a given closed path into sub shapes based on an intersecting path. It'll do essentially exactly what you're looking for: https://github.com/adamwulf/ClippingBezier

    NSArray<UIBezierPath*>* componentShapes = [shapePath uniqueShapesCreatedFromSlicingWithUnclosedPath:scissorPath];
    

    Alternatively, you can also just find the intersection points:

    NSArray* intersections = [scissorPath findIntersectionsWithClosedPath:shapePath andBeginsInside:nil];