iOS14から登場したUIColorPickerViewController
ですが、
簡単に実装出来、とても便利だったのでコピペで使えるように載せておきます。
今回はSwiftUIではなく、Storyboardでの実装を行っております。
実行環境 | バージョン |
---|---|
Xcode | 12.0 |
Swift | 5 |
ColorPickerって何?
コピペで使えるColorPickerコード
起動すると、ColorPickerViewController
が表示されるという簡単なアプリになります。
色を選択すると、view
のbackgraoundColor
に反映されます。
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")
}
}
動作させてみる
解説①
UIColorPicekrViewController
のプロパティについて解説
まずは、
colorPicker.supportsAlpha = true
・Apple公式ドキュメント
supportsAlpha
A Boolean value that enables alpha value control.
透明度のコントロールを可能にするBool値
とのことです。
つまり、
supportsAlpha
の値をfalse
にすると、ColorPickerのOpacityコントローラーが非表示になります。
colorPicker.supportsAlpha = false

続きまして、
colorPicker.selectedColor = selectedColor
・Apple公式ドキュメント
selectedColor
The color selected by the user.
ユーザーに選択された色
とのことです。
そのまんまですね。
この値から選択された色を取得したり、逆にUIColorPickerViewController
が開かれた時に選択されている色を決める事が出来ます。
解説②
UIColorPicekrViewController
のdelegateメソッドについて解説
まず、
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に対応していないと使えないのでその辺りは様子見つつという感じでしょうか。
何か誤りなどありましたら、優しく訂正していただけると幸いです。