Chameleonというライブラリを試してみました。
インストール
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) } } }
色は以下のようなものです。
色の明度変更をする事もできます。
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) } }
下のように明るい赤と暗い赤を取得できます。
グラデーションも簡単に実装できます。
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) } }
以下のように赤、青、紫のグラデーションを表現できました。
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) } }
引数に赤を渡したら、下のようにフラットな緑色が返ってきました。
色に合わせて白 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) } }
他にも画像の特定座標の色取得など、便利な機能が揃っているようです。