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

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

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

#ColorPickerって何？
自由に色選択や透明度を調整できるカラーパレットです。
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678954/3dfbbf89-51cb-ea53-983e-c8af77f0674f.png">

#コピペで使えるColorPickerコード
起動すると、<code>ColorPickerViewController</code>が表示されるという簡単なアプリになります。
色を選択すると、<code>view</code>の<code>backgraoundColor</code>に反映されます。

```swift:
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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678954/c6060a12-27c3-fbf5-f337-f6d31713ecf5.gif)

#解説①
<code>UIColorPicekrViewController</code>のプロパティについて解説

まずは、

```swift:
colorPicker.supportsAlpha = true
```

>・Apple公式ドキュメント
<font color="black"><b>supportsAlpha<b></font>
A Boolean value that enables alpha value control.

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

つまり、
<code>supportsAlpha</code>の値を<code><font color="red">false</font></code>にすると、ColorPickerのOpacityコントローラーが非表示になります。

```swift:
colorPicker.supportsAlpha = false
```
<img width="300" alt="スクリーンショット2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678954/9ab8e075-a274-b180-e163-1251db2b21df.png">

続きまして、

```swift:
colorPicker.selectedColor = selectedColor
```
>・Apple公式ドキュメント
<font color="black"><b>selectedColor<b></font>
The color selected by the user.

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

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

#解説②
<code>UIColorPicekrViewController</code>の<b>delegateメソッド</b>について解説

まず、

```swift:
func colorPickerViewControllerDidSelectColor(_ viewController: UIColorPickerViewController) {
     }
```
>・Apple公式ドキュメント
<font color="black"><b>colorPickerViewControllerDidSelectColor(_:)<b></font>
Informs the delegate when the user selects a color.

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

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

続いて、

```swift:
func colorPickerViewControllerDidFinish(_ viewController: UIColorPickerViewController) {
    }
```
>・Apple公式ドキュメント
<font color="black"><b>colorPickerViewControllerDidSelectColor(_:)<b></font>
Informs the delegate that the user dismissed the view controller.

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

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

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