DEV Community

David Goyes
David Goyes

Posted on

SwiftUI #5: Estilo de botón

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:

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()
      )
  }
}
Enter fullscreen mode Exit fullscreen mode

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))
Enter fullscreen mode Exit fullscreen mode

Top comments (0)