es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Eliminación del margen izquierdo para HStack

Me gustaría eliminar el margen izquierdo en un HStack que se utiliza como una columna de encabezado para una vista de lista debajo de él.

Actualmente, mi interfaz de usuario se ve así:

enter image description here

Me gustaría que el texto “Calories” esté alineado con el número debajo de él, y no estoy seguro de cómo lograrlo, ya que establecer el padding(.leading, 0) no lo logró. He adjuntado el código de la vista a continuación.

var body: some View {
    HStack(spacing: 50) {
        Text("Calories").font(.title2).padding(.leading, 0)
        Text("Weight").font(.title2)
        Text("Date").font(.title2)
    }
}

List(weightEntriesViewModel.weightEntries) { item in

    let weight: String = String(format: "%.2f", item.weight)
    let date: String = self.convertDate(item: item)
    HStack(spacing: 50) {
        Text("\(item.calories)")
        Text(weight)
        Text(date)
        Button(action: {
            self.weightEntriesViewModel.removeEntry(weightEntry: item)
            self.weightEntriesViewModel.getData()
        }, label: {
            HStack {
                Image(systemName: "delete.left")
                    .font(.title)
                Text("Remove")
                    .frame(width: 10, height: 10, alignment: .trailing)

            }.padding()
            .foregroundColor(.white)
            .background(Color.red)
            .cornerRadius(40)
        })
    }
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para eliminar el margen izquierdo en el HStack utilizado como columna de encabezado para la vista de lista, puedes establecer el modificador .listRowInsets en EdgeInsets(). Esto eliminará el relleno por defecto aplicado al HStack dentro de la fila de la lista.

    Así es cómo puedes modificar tu código para lograr esto:

    var body: some View {
        HStack(spacing: 50) {
            Text("Calories").font(.title2)
            Text("Weight").font(.title2)
            Text("Date").font(.title2)
        }.listRowInsets(EdgeInsets())
    
        List(weightEntriesViewModel.weightEntries) { item in
            // ...
        }
    }
    

    Al establecer .listRowInsets en EdgeInsets(), la fila de encabezado del HStack ahora estará alineada con las filas debajo de ella.

Comments are closed.