Need help with ios-curve-interpolation?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

206 Stars 20 Forks MIT License 16 Commits 4 Opened issues


iOS app demonstrating curve interpolation with Hermite and Catmull-Rom curves.

Services available


Need anything else?

Contributors list

# 440,863
10 commits
# 512,074
3 commits


iOS Curve Interpolation consists of two main components: - A category on UIBezierCurvePath, UIBezierCurvePath+Interpolation. - A small iOS app that demonstrates the categories use.


#include "UIBezierCurvePath+Interpolation.h"

const char *encoding = @encode(CGPoint);

NSMutableArray *array = [NSMutableArray new];

// Add 4 CGPoints as NSValue [array addObject:[NSValue valueWithBytes:&CGPointMake(0.0, 0.0) objCType:encoding]; [array addObject:[NSValue valueWithBytes:&CGPointMake(0.0, 1.0) objCType:encoding]; [array addObject:[NSValue valueWithBytes:&CGPointMake(1.0, 1.0) objCType:encoding]; [array addObject:[NSValue valueWithBytes:&CGPointMake(1.0, 0.0) objCType:encoding];

UIBezierPath *path = [interpolateCGPointsWithCatmullRom:array closed:NO alpha:0.5]; // Use the path


To add an easy-to-use category for curve interpolation onto UIBezierPath. Also to provide a small iOS app for demonstrating/testing the interpolation inputs (Hermite vs. Catmull-Rom, alpha value effects, and open/closed option).


Clone the repo, open the Xcode project in Xcode 5+.

The UIBezierPath+Interpolation.h/.m is standalone, provided you also include CGPointExtension.h/.m (which are also included in the Xcode project).

API Reference

// pointsAsNSValues must be NSValue objects containing CGPoints.
// ex:
//     const char *encoding = @encode(CGPoint);
//     NSValue *pointAsValue = [NSValue valueWithBytes:&cgPoint objCType:encoding];

// 0.0 <= alpha <= 1.0 +(UIBezierPath *)interpolateCGPointsWithCatmullRom:(NSArray *)pointsAsNSValues closed:(BOOL)closed alpha:(float)alpha; +(UIBezierPath *)interpolateCGPointsWithHermite:(NSArray *)pointsAsNSValues closed:(BOOL)closed;

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.