Swiftpack.co -  LeoNatan/LNInterpolation as Swift Package
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
LeoNatan/LNInterpolation
An interpolation framework for Cocoa and Cocoa Touch.
.package(url: "https://github.com/LeoNatan/LNInterpolation.git", from: "1.1")

LNInterpolation

An interpolation framework for Cocoa and Cocoa Touch.

GitHub release GitHub stars GitHub license PayPal Donation Button

GitHub issues GitHub contributors Swift Package Manager compatible Carthage compatible

Protocol

The framework defines a protocol, LNInterpolable (Interpolable in Swift), defining a common API for interpolating between two values.

The protocol defines two methods.

Objective C

- (instancetype)interpolateToValue:(id)toValue progress:(double)progress;
- (instancetype)interpolateToValue:(id)toValue progress:(double)progress behavior:(LNInterpolationBehavior)behavior;

Swift

public func interpolate(to toValue: Any, progress: Double) -> Self
public func interpolate(to toValue: Any, progress: Double, behavior: InterpolationBehavior) -> Self

The first variant returns an interpolated value between the original and toValue according to progress, using the default behavior. The second is similar, but receives a behavior modifier. Each implementation can use this to choose how to implement the interpolation between the values. A default value of LNInterpolationBehaviorUseDefault (.useDefault in Swift) is always available.

Provided Implementations

The framework provides implementation for the most common cases where interpolation may be needed.

NSValue and NSNumber

An implementation is provided for NSValue, which provides support for the following values:

  • Numbers (NSNumber)
    • Decimal numbers (NSDecimalNumber)
  • Core Graphics: CGPoint, CGSize, CGVector, CGRect, CGAffineTransform (NSValue)
  • UIKit: UIOffset, UIEdgeInsets (NSValue)
  • AppKit: NSEdgeInsets (NSValue)

UIColor and NSColor

An implementation is provided for colors (both for iOS and macOS). By default, color interpolation is performed in Lab colorspace for best possible interpolation quality. If performance is an issue, you may use LNInterpolationBehaviorUseRGBColorSpace (.useRGBColorSpace in Swift) to specify a behavior where RGB colorspace is used.

Demo Playground

A demo playground is provided. Open LNInterpolationExample/LNInterpolationExample.xcworkspace and build the framework for macOS. Open the playground and explore the available pages.

Adding to Your Project

Swift Package Manager

Swift Package Manager is the recommended way to integrate LNInterpolation in your project.

LNInterpolation supports SPM versions 5.1.0 and above. To use SPM, you should use Xcode 11 to open your project. Click File -> Swift Packages -> Add Package Dependency, enter https://github.com/LeoNatan/LNInterpolation. Select the version you’d like to use.

You can also manually add the package to your Package.swift file:

.package(url: "https://github.com/LeoNatan/LNInterpolation.git", from: "1.0")

And the dependency in your target:

.target(name: "BestExampleApp", dependencies: ["LNInterpolation"]),

Carthage

Add the following to your Cartfile:

github "LeoNatan/LNInterpolation"

Manual

Drag the LNInterpolation.xcodeproj project to your project, and add LNInterpolation.framework to Embedded Binaries in your project target's General tab. Xcode should sort everything else on its own.

GitHub

link
Stars: 30
Last commit: 1 week ago

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Release Notes

v1.1
1 week ago
  • Added Swift Package Manager support

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics