A small library to dramatically speed up common operations on UIBezierPath, and also bring its functionality closer to NSBezierPath
Switch branches/tags
Clone or download
Latest commit bc7b9ad Jul 6, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
PerformanceBezier.xcodeproj fixed memory free Aug 10, 2015
PerformanceBezier Build warnings Jul 6, 2018
PerformanceBezierTests fixed comments to attribute to the correct project Aug 10, 2015
.gitignore Add gitignore Mar 26, 2015
LICENSE first commit Feb 2, 2015
README.md Updated readme Dec 28, 2016
SubdivideLicense added license file for Subdivide Bezier code May 10, 2015


iOS UIBezierPath Performance

This code dramatically improves performance for common UIBezierPath operations, and it also brings UIBezierPath API closer to its NSBezierPath counterpart. For full background of this repo, checkout the blogpost explaining what this framework does.

This code was originally part of Loose Leaf. Additional components and libraries from the app have also been open sourced.

What is this?

This framework adds caching into every UIBezierPath so that common operations can be performed in constant time. It also adds some missing NSBezierPath methods to the UIBezierPath class.

After linking this framework into your project, all Bezier paths will automatically be upgraded to use this new caching. No custom UIBezierPath allocation or initialization is required.

For example, by default there is no O(1) way to retrieve elements from a UIBezierPath. In order to retrieve the first point of the curve, you must CGPathApply() and interate over the entire path to retrieve that single point. This framework changes that. For many algorithms, this can dramatically affect performance.

Are you using PerformanceBezier?

Let me know! I'd love to know where PerformanceBezier is using and how it's affecting your apps. Ping me at @adamwulf!

Also - If you like PerformanceBezier, then you'll love ClippingBezier - an easy way to find intersecting points, lines, and shapes between two UIBezierPaths.


View the header files for full documentation.

Building the framework

This library will generate a proper static framework bundle that can be used in any iOS7+ project.

Including in your project

  1. Link against the built framework.
  2. Add "-ObjC++ -lstdc++" to the Other Linker Flags in the project's Settings
  3. #import <PerformanceBezier/PerformanceBezier.h>


This framework includes and uses the JRSwizzle library, which is licensed under the MIT license.


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 United States License.

For attribution, please include:

  1. Mention original author "Adam Wulf for Loose Leaf app"
  2. Link to https://getlooseleaf.com/opensource/
  3. Link to https://github.com/adamwulf/PerformanceBezier

Support this framework

This framework is created by Adam Wulf (@adamwulf) as a part of the Loose Leaf app.

Buy the app to show your support! :)