Skip to content

valdirunars/Lorikeet

Repository files navigation

Carthage Compatible CocoaPods Compatible Platforms iOS License MIT

Lorikeet

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)