Lorikeet
  • March 11, 2024

Lightweight framework for generating visually aesthetic color-schemes in Swift

Requirements


  • UIKit

Features


What can Lorikeet do for you

  • Calculate visual color difference (wikipedia)
    • Algorithms:
      • CIE76
      • CIE94
      • CIE2000
  • Generate color schemes

Installation


Carthage

In your Cartfile put:

github “valdirunars/Lorikeet”

CocoaPods

In you Podfile

pod ‘Lorikeet’

Manual

Copy the ./Lorikeet folder 😁🗂

How to Use


Basic Usage

let red: UIColor = .red

let label = UILabel()
label.backgroundColor = red

// Assign a maximum contrasting color as foreground color
label.textColor = red.lkt.complimentaryColor

// Visual color difference
let distance: Float = red.distance(to: .blue, algorithm: .cie2000)

// Generate color scheme
red.lkt.generateColorScheme(numberOfColors: 40) { colors in
print(colors)
}

Advanced

Lorikeet’s Algorithm enum has two cases for advanced usage:

.advancedCIE94(l: Float, c: Float, h: Float, k1: Float, k2: Float)

.advancedCIE2000(l: Float, c: Float, h: Float)

Example:

let l: Float = 0.8
let c: Float = 0.9
let h: Float = 1.0

red.lkt.generateColorScheme(numberOfColors: 40,
using: .advancedCIE2000(l: l, c: c, h: h)) { colors in
print(colors)
}

let range = HSVRange(hueRange: (0, 1),
saturationRange: (0.5, 0.5),
brightnessRange: (0.95, 0.95))

color.lkt.generateColorScheme(numberOfColors: 15,
withRange: range,
using: .cie2000) {
colors in
}

Screenshots

Making text readable using random colors:

let label = UILabel(frame: frame)
self.view.backgroundColor = UIColor(hue: 180/360.0,
saturation: 0.5,
brightness: 0.6,
alpha: 1)

label.backgroundColor = self.view
.backgroundColor!
.lkt
.generateRandomMatchingColor()

label.textColor = label.backgroundColor!
.lkt
.complimentaryColor

Generating colors:

let color: UIColor = UIColor(red: 245/255.0, green: 110/255.0, blue: 100/255.0, alpha: 1)

color.lkt.generateColorScheme(numberOfColors: 10)

GitHub


View Github

#color #colorpicker #colors #material-colors #swift
YOU MIGHT ALSO LIKE...
🧭 NavigationKit

NavigationKit is a lightweight library which makes SwiftUI navigation super easy to use. 💻 Installation 📦 Swift Package Manager Using Swift Package Manager, add ...

swiftui-navigation-stack

An alternative SwiftUI NavigationView implementing classic stack-based navigation giving also some more control on animations and programmatic navigation. NavigationStack Installation ...

Stinsen

Simple, powerful and elegant implementation of the Coordinator pattern in SwiftUI. Stinsen is written using 100% SwiftUI which makes it ...

SwiftUI Router

With SwiftUI Router you can power your SwiftUI app with path-based routing. By utilizing a path-based system, navigation in your app becomes ...

FlowStacks

This package takes SwiftUI's familiar and powerful NavigationStack API and gives it superpowers, allowing you to use the same API not just ...