iOS
Swift
swift4

カラーピッカーをつくってみた(swift)

はじめに

objective-cでつくったはいいけど使っていないクラスをswiftに書き換えてgithubにあげてみたので、そのクラスについて紹介したいと思います。自分はまだ使う場面がない(今のところ思いつかない)ので、あわよくばだれかに使ってもらえたらいいなと思います。(第六弾)

第一弾(時計)

第二弾(スピードメーター)

第三弾(めくるカレンダー)

第四弾(グラフ)

第五弾(日本地図)

GitHub

今回はこちらのクラスについて紹介します。

AMColorPicker

見た目

colorpicker.gif

機能

3種類の方法で色を選択できる

Wheel

colorpicer_whole.png

カーソル移動で色が選択できる

Table

colorpicer_table.png
標準の色を選択できる

Slider

colorpicer_sloder.png
RGBのスライダーもしくはカラーコードの入力で色が選択できる

使い方

  1. 画面を表示する

    指定のViewControllerから遷移する

    let colorPickerViewController = AMColorPickerViewController()
    present(colorPickerViewController, animated: true, completion: nil)
    
  2. 初期選択の色を設定する

    let colorPickerViewController = AMColorPickerViewController()
    colorPickerViewController.selectedColor = UIColor.red
    

    設定しない場合は白色になる

  3. デリゲートを設定する

    let colorPickerViewController = AMColorPickerViewController()
    colorPickerViewController.delegate = self
    

    色を選択すると下記のデリゲートが呼ばれる

    protocol AMColorPickerViewControllerDelegate: class {
    
    func colorPickerViewController(colorPickerViewController: AMColorPickerViewController, didSelect color: UIColor)
    }
    

いずれかのViewのみ使いたい場合

それぞれのピッカーはViewで分かれているので一部のみの使用も可能

例. Wheelのみ使いたい場合

  1. xibにカスタムクラスを設定
    colopicker_customclass.png

  2. 初期選択の色を設定する

    @IBOutlet weak var colorPickerWheelView: AMColorPickerWheelView!
    colorPickerWheelView.selectedColor = UIColor.red
    

    設定しない場合は白色

  3. デリゲートを設定する

    @IBOutlet weak var colorPickerWheelView: AMColorPickerWheelView!
    colorPickerWheelView.delegate = self
    

    色を選択すると下記のデリゲートが呼ばれる

    protocol AMColorPickerWheelViewDelegate: class {
    
    func colorPickerWheelView(colorPickerWheelView: AMColorPickerWheelView, didSelect color: UIColor)
    }
    

TableとSliderも同様の方法で使用可能。

つくったきっかけ

ある日、HSV色空間というものを知った。意味はよく理解できなかったが、これを使えば座標で色が指定できると思った。あのよくみる円のカラーピッカーがつくれるんじゃないかと思いWheelをつくった。その後、どうせならXcodeのカラーピッカーに近づけようとTableとSliderをつくった。

使わなかった理由

  1. 使う機会がない

    つくってから思ったが、アプリ内で色を選択したい場面というのがあまりない。(今のところは遭遇していない)

さいごに

以上の理由から今のところは使用していませんが、もしかしたら今後使う場面があるかもしれません。アプリ内で色選択したい場合ってどういうときだろう?画像編集とかお絵描きアプリとか?...あまり思いつかない。

私はほぼObjective-Cしか使ったことがないペーペーのプログラマーなので記事内容やgithubのコードにおかしなところがあればご指摘いただければ幸いです。