LoginSignup
2
1

More than 3 years have passed since last update.

【Swift】コピペで使えるColorPicker(色を自由に選択できるパレット)

Posted at

iOS14から登場したUIColorPickerViewControllerですが、
簡単に実装出来、とても便利だったのでコピペで使えるように載せておきます。
今回はSwiftUIではなく、Storyboardでの実装を行っております。

実行環境 バージョン
Xcode 12.0
Swift 5

ColorPickerって何?

自由に色選択や透明度を調整できるカラーパレットです。
image.png

コピペで使えるColorPickerコード

起動すると、ColorPickerViewControllerが表示されるという簡単なアプリになります。
色を選択すると、viewbackgraoundColorに反映されます。

import UIKit

class CPSampleViewController: UIViewController {

    var colorPicker = UIColorPickerViewController()
    var selectedColor = UIColor.white

    override func viewDidLoad() {
        super.viewDidLoad()
        colorPicker.delegate = self
        view.backgroundColor = selectedColor
        appearColorPicker()
    }

    func appearColorPicker() {
        colorPicker.supportsAlpha = true
        colorPicker.selectedColor = selectedColor
        present(colorPicker, animated: true)
    }
}

extension CPSampleViewController: UIColorPickerViewControllerDelegate {
    func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) {
        selectedColor = viewController.selectedColor
        view.backgroundColor = selectedColor
    }

    func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) {
        print("dismissed colorPicker")
    }
}

動作させてみる

colorPicker.gif

解説①

UIColorPicekrViewControllerのプロパティについて解説

まずは、

colorPicker.supportsAlpha = true

・Apple公式ドキュメント
supportsAlpha
A Boolean value that enables alpha value control.

透明度のコントロールを可能にするBool値
とのことです。

つまり、
supportsAlphaの値をfalseにすると、ColorPickerのOpacityコントローラーが非表示になります。

colorPicker.supportsAlpha = false

スクリーンショット2.png

続きまして、

colorPicker.selectedColor = selectedColor

・Apple公式ドキュメント
selectedColor
The color selected by the user.

ユーザーに選択された色
とのことです。

そのまんまですね。
この値から選択された色を取得したり、逆にUIColorPickerViewControllerが開かれた時に選択されている色を決める事が出来ます。

解説②

UIColorPicekrViewControllerdelegateメソッドについて解説

まず、

func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) {
     }

・Apple公式ドキュメント
colorPickerViewControllerDidSelectColor(_:)
Informs the delegate when the user selects a color.

ユーザーが色を選択した時に呼び出されるdelegateメソッド
とのことです。

今回は、このdelegateを使ってグローバル変数に選択された色の値を代入しています。

続いて、

func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) {
    }

・Apple公式ドキュメント
colorPickerViewControllerDidSelectColor(_:)
Informs the delegate that the user dismissed the view controller.

ユーザーがUIColorPickerViewControllerをdismissした時に呼び出されるメソッド
とのことです。

まとめ

とても簡単に実装できるようになったのでどんどん使っていきたいです!
しかし、iOS14に対応していないと使えないのでその辺りは様子見つつという感じでしょうか。

何か誤りなどありましたら、優しく訂正していただけると幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1