Skip to content


Repository files navigation



Lightweight HSB color picker view in Swift.



Add the following to your Cartfile:

github "naturaln0va/RAScrollablePickerView"

The build the Cartfile:

carthage update --platform iOS

Then drag Carthage/Build/iOS/RAScrollablePickerView.framework into your Xcode project.

Finally add the import:

import RAScrollablePickerView


Just drop Framework/RAScrollablePickerView/RAScrollablePickerView/RAScrollablePickerView.swift in your project.


Then create 3 instances of the scrollable picker view and assign each a different type.

huePicker.delegate = self

saturationPicker.delegate = self
saturationPicker.type = .saturation
saturationPicker.hueValueForPreview = huePicker.value

brightnessPicker.delegate = self
brightnessPicker.type = .brightness
brightnessPicker.hueValueForPreview = huePicker.value

Finally make sure the parent view/viewcontroller conforms to RAScrollablePickerViewDelegate and add the required valueChanged method.

func valueChanged(_ value: CGFloat, type: PickerType) {
    switch type {
    case .hue:
        colorPreView.backgroundColor = UIColor(hue: value, saturation: saturationPicker.value, brightness: brightnessPicker.value, alpha: 1)
        saturationPicker.hueValueForPreview = value
        brightnessPicker.hueValueForPreview = value
    case .saturation:
        colorPreView.backgroundColor = UIColor(hue: huePicker.value, saturation: value, brightness: brightnessPicker.value, alpha: 1)
    case .brightness:
        colorPreView.backgroundColor = UIColor(hue: huePicker.value, saturation: saturationPicker.value, brightness: value, alpha: 1)

Update a picker with a color

let colors: [UIColor] = [.systemBlue, .systemOrange, .systemYellow]
let startColor = colors.randomElement() ?? .systemPink

picker.set(color: startColor)


Feel free the reach out to me if you have an questions.