Al personalizar un botón conviene definir su estilo es un tipo de dato aislado que conforme el protocolo ButtonStyle para aumentar el orden del código.
ButtonStyle es un protocolo que provee un ButtonStyleConfiguration que tiene las siguientes propiedades:
-
let label: ButtonStyleConfiguration.Label: Una vista que describe el efecto de presionar un botón. -
let isPressed: Bool: Un booleano que indica si el usuario está presionando el botón. -
let role: ButtonRole?: Un rol que describe el propósito del botón.
Conformar ButtonStyle implica definir, además del estilo del botón, qué pasa cuando se lo presiona.
Tener en cuenta que se debe especificar explícitamente cuál es la apariencia del botón cuando el usuario lo presiona con base en el valor de configuration.isPressed.
import SwiftUI
struct NeuButtonStyle: ButtonStyle {
let width: CGFloat
let height: CGFloat
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.foregroundColor(Color(UIColor.systemRed))
// Necesario para simular el efecto de presionar el botón
.opacity(configuration.isPressed ? 0.2 : 1)
.frame(width: width, height: height)
.background(
Capsule()
.fill(Color.element)
.northWestShadow()
)
}
}
Para aplicar el estilo al botón, hay que usar el modificador buttonStyle
// Antes
Button("Hit Me!") {
// Acción
}
.frame(width: 327, height: 48)
.background(
Capsule()
.fill(Color.element)
.northWestShadow()
)
// Después
Button("Hit Me!") {
// Acción
}
.buttonStyle(NeuButtonStyle(width: 327, height: 48))
Top comments (0)