web-dev-qa-db-fra.com

Comment définir l'état personnalisé en surbrillance du bouton SwiftUI

J'ai un bouton. Je veux définir une couleur d'arrière-plan personnalisée pour l'état en surbrillance. Comment puis-je le faire dans SwiftUI?

enter image description here

Button(action: signIn) {
    Text("Sign In")
}
.padding(.all)
.background(Color.red)
.cornerRadius(16)
.foregroundColor(.white)
.font(Font.body.bold())
14
subdan

Je cherchais une fonctionnalité similaire et je l'ai fait de la manière suivante.

J'ai créé une structure View spéciale renvoyant un Button dans le style dont j'ai besoin, dans cette structure j'ai ajouté une propriété State sélectionnée. J'ai une variable nommée 'table' qui est un Int puisque mes boutons sont des boutons ronds avec des chiffres dessus

struct TableButton: View {
    @State private var selected = false

    var table: Int

    var body: some View {
        Button("\(table)") {
            self.selected.toggle()
        }
        .frame(width: 50, height: 50)
        .background(selected ? Color.blue : Color.red)
        .foregroundColor(.white)
        .clipShape(Circle())
    }
}

Ensuite j'utilise dans mon contenu Voir le code

HStack(spacing: 10) {
  ForEach((1...6), id: \.self) { table in
    TableButton(table: table)
  }
}

Cela crée une pile horizontale avec 6 boutons qui se colorent en bleu lorsqu'ils sont sélectionnés et en rouge lorsqu'ils sont désélectionnés.

Je ne suis pas un développeur expérimenté, mais j'ai essayé toutes les façons possibles jusqu'à ce que je trouve que cela fonctionne pour moi, j'espère que cela sera également utile pour d'autres.

0
Nico van der Linden