SwiftUI: componente ColorPicker
Qué es ColorPicker
El componente ColorPicker
permite mostrar al usuario una nueva interfaz de selección de color. No es equivalente a ningún componente de UIKit
. Es un nuevo componente añadido en iOS 14.
Aquí podéis consultar la documentación oficial
El componente requiere un String
o View
, que servirá como su título, y una variable de estado de tipo Color
que será la que indicará el color que debe presentar y también guardará el color seleccionado por el usuario.
También permite indicar si el componente debe mostrar los controles de opacidad a través del parámetro supportsOpacity
. Tiene varios inicializadores para combinar estos parámetros:
init(selection: Binding, supportsOpacity: Bool, label: () -> Label) init(LocalizedStringKey, selection: Binding , supportsOpacity: Bool)
Un ejemplo de creación es la siguiente:
@State private var colorSelected: Color = .red ... ColorPicker("Select a color", selection: $colorSelected)
Nota: el parámetro selection es una variable de estado que usará el componente ColorPicker para asignar el valor seleccionado. Cuando queremos usar un valor fijo (por ejemplo, por motivos de pruebas) podemos usar la función .constant() que pertenece al struct Binding para cumplir con su implementación sin tener que declarar la variable de estado.
Cómo leer datos de un ColorPicker
El ColorPicker
maneja tipos de datos Color
. Su parámetro selection
que encontramos en su ‘inicializador’ define el color actual que debe mostrar el ColorPicker
y también se modifica con el color que el usuario selecciona en el componente. Esta variable es una variable de estado que debemos definir previamente, y en ella estará en todo momento el valor actual del ColorPicker
.
La declaración de la variable se realiza de la siguiente forma:
@State private var colorSelected: Color = .red
Y para usarla tenemos que pasarla como parámetro al ColorPicker
.
ColorPicker("Select a color", selection: $colorSelected)
Modificadores comunes para ColorPicker
El componente DatePicker
comparte los mismos métodos de personalización que el componente View
y pueden ser consultados en el siguiente enlace.
Los siguientes modificadores son muy comunes de usarlos en este componente.
labelsHidden
Permite ocultar los labels del componente. Es muy útil cuando no queremos mostrar ningún texto, dejándonos posicionar el propio ColorPicker
a nuestro gusto:
@State private var colorSelected: Color = .red ... ColorPicker("Select a color", selection: $colorSelected) .labelsHidden()
Ejemplo
Puedes encontrar este ejemplo en github.com bajo el apartado ColorPicker.
Rafael Fernández,
iOS Tech Lider