しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

ChameleonでUIColorを便利に使う

Chameleonというライブラリを試してみました。

github.com

インストー

CocoaPodsでインストールします。

pod "ChameleonFramework"

使い方

UIColorに多くのフラットカラーが追加されます。

import UIKit
import ChameleonFramework

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        [
            UIColor.flatRed()!,
            UIColor.flatLime()!,
            UIColor.flatPlum()!
            ].enumerated().forEach {
                
                let colorView = UIView(frame: CGRect(x: 100, y: 100 + 30 * $0.offset, width: 100, height: 30))
                colorView.backgroundColor = $0.element
                view.addSubview(colorView)
        }
    }
}

色は以下のようなものです。

f:id:llcc:20170626233309p:plain

色の明度変更をする事もできます。

import UIKit
import ChameleonFramework

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let darkView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 30))
        darkView.backgroundColor = UIColor.red.darken(byPercentage: 0.5)
        view.addSubview(darkView)
        
        let lightView = UIView(frame: CGRect(x: 100, y: 130, width: 100, height: 30))
        lightView.backgroundColor = UIColor.red.lighten(byPercentage: 0.5)
        view.addSubview(lightView)
    }
}

下のように明るい赤と暗い赤を取得できます。

f:id:llcc:20170626233718p:plain

グラデーションも簡単に実装できます。

import UIKit
import ChameleonFramework

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let colorView = UIView(frame: CGRect(x: 100, y: 130, width: 100, height: 30))
        colorView.backgroundColor = UIColor(gradientStyle: .leftToRight, withFrame: CGRect(x: 100, y: 100, width: 100, height: 30), andColors: [UIColor.red, UIColor.blue, UIColor.purple])
        view.addSubview(colorView)
    }
}

以下のように赤、青、紫のグラデーションを表現できました。

f:id:llcc:20170626233958p:plain

complementaryFlatColorOfを使うとフラットな補色を取得する事ができます。

import UIKit
import ChameleonFramework

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let colorView = UIView(frame: CGRect(x: 100, y: 130, width: 100, height: 30))
        colorView.backgroundColor = UIColor(complementaryFlatColorOf: UIColor.red)
        view.addSubview(colorView)
    }
}

引数に赤を渡したら、下のようにフラットな緑色が返ってきました。

f:id:llcc:20170626234546p:plain

色に合わせて白 or 黒を返してくれるメソッドもあります。
黄色だったら黒・赤だったら白など、その色と対照的な色を返してくれます。
色の上に乗せる文字色を決めるのに便利そうです。

import UIKit
import ChameleonFramework

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let colorView = UIView(frame: CGRect(x: 100, y: 130, width: 100, height: 30))
        colorView.backgroundColor = UIColor(contrastingBlackOrWhiteColorOn: UIColor.yellow, isFlat: true)
        view.addSubview(colorView)
    }
}

他にも画像の特定座標の色取得など、便利な機能が揃っているようです。