5 votes

Comment augmenter la zone touchable de l'élément NavigationBarItem dans SwiftUI ?

J'ai ce code pour mon view

struct ContentView: View {
    var body: some View {
        NavigationView{
            List{
                ForEach(0...5, id: \.self) { note in
                    VStack(alignment: .leading) {
                        Text("title")
                        Text("subtitle")
                            .font(.subheadline)
                            .foregroundColor(.secondary)
                    }
                }
            }
            .navigationBarItems(trailing: resetButton)
            .navigationBarTitle(Text("Notes"))
        }
    }

    var resetButton: some View {
        Button(action: {
            print("reset")
        }) {
            Image(systemName: "arrow.clockwise")
        }
        .background(Color.yellow)
    }
} 

resetButton ressemble à ça : enter image description here

Quand je tape sur le resetButton il semble que seule la zone jaune réagisse au toucher.

Comment puis-je agrandir la zone touchable de ce bouton (pour qu'il se comporte comme un bouton normal) ? UIBarButtonItem )

12voto

Mojtaba Hosseini Points 2525

Vous pouvez modifier le cadre de la view à l'intérieur de le bouton :

var resetButton: some View {
    Button(action: {
        print("reset")
    }) {
        Image(systemName: "arrow.clockwise")
        .frame(width: 44, height: 44) // Or any other size you like
    }
    .background(Color.yellow)
}

4voto

CodeSnippets Points 73

Cet article de blog m'a mis dans la bonne direction, j'avais besoin d'ajouter du rembourrage directement à l'image.

enter image description here

Button(action: {
    // Triggered code
}) {
    Image(systemName: "plus")
        .font(.system(size: 22, weight: .regular))
        .padding(.vertical)
        .padding(.leading, 60)
}
.background(Color.red) // Not needed

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X