Latest 1.0.0
Homepage https://github.com/kirualex/ios-curve-interpolation
License MIT
Platforms ios 8.0, requires ARC
Authors ,

Synopsis

iOS Curve Interpolation consists of two main components:

  • A category on UIBezierCurvePath, UIBezierCurvePath+Interpolation.
  • A small iOS app that demonstrates the categories use.

Example

#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

Motivation

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).

Installation

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;

Latest podspec

{
    "name": "ios-curve-interpolation",
    "version": "1.0.0",
    "summary": "Easy-to-use category for curve interpolation onto UIBezierPath",
    "homepage": "https://github.com/kirualex/ios-curve-interpolation",
    "authors": {
        "John Fisher": "https://github.com/jnfisher",
        "Alexis Creuzot": "http://alexiscreuzot.com"
    },
    "license": {
        "type": "MIT"
    },
    "source": {
        "git": "https://github.com/kirualex/ios-curve-interpolation.git",
        "tag": "1.0.0"
    },
    "requires_arc": true,
    "platforms": {
        "ios": "8.0"
    },
    "source_files": [
        "CGPointExtension.{h,m}",
        "UIBezierPath+Interpolation.{h,m}"
    ]
}

Pin It on Pinterest

Share This