He visto preguntas similares como esta aquí en Stack Overflow, pero ninguna de ellas ha podido responder a mi pregunta.
Creé una List , pero quiero eliminar el espacio de relleno (marcado con una flecha roja) sobre el contenido de la List . ¿Cómo puedo eliminarlo cuando uso un GroupedListStyle ?
Esta es una List dentro de un VStack dentro de un NavigationView que se muestra a través de fullscreenCover :
var body: some View { NavigationView { VStack { taskEventPicker myList } .navigationBarTitle("Add Task", displayMode: .inline) } } donde taskEventPicker es un Picker segmentado (enmarcado en verde):
var taskEventPicker: some View { Picker("Mode", selection: $selection) { /* ... */ } .pickerStyle(SegmentedPickerStyle()) .padding() } y myList es el formulario en cuestión (enmarcado en amarillo):
var myList: some View { List { /* ... */ } .listStyle(GroupedListStyle()) }lo que he probado
UITableView.appearance().tableHeaderView en un marco vacíoUITableView.appearance().contentInset.top = -35listRowInsets (esto afecta a todas las filas de la lista) Nota: estoy buscando una respuesta que pueda aplicarse a GroupedListStyle . Entiendo que este problema no ocurre con PlainListStyle . Este problema de relleno también ocurre con el listStyle predeterminado.
¡Gracias por la ayuda!
Versión Xcode: 12.5
En primer lugar, diría que GroupedListStyle funciona según lo previsto.
En iOS, el estilo de lista agrupada muestra un encabezado y un pie de página más grandes que el estilo simple, lo que distancia visualmente a los miembros de las diferentes secciones.
Dices que has probado esto, pero funciona para mí (Xcode 12.5.1):
List { ... } .onAppear(perform: { UITableView.appearance().contentInset.top = -35 }) También puede ocultar el encabezado de la lista usando un ZStack con la Lista en la parte inferior de la pila y el Picker en la parte superior. El selector tiene transparencia, por lo que también tendría que agregar una vista opaca para que actúe como fondo para el Picker .
var body: some View { NavigationView { ZStack(alignment: .top) { List { ... } .listStyle(GroupedListStyle()) .padding(.top, 30) Color.white .frame(height: 65) Picker { ... } .pickerStyle(SegmentedPickerStyle()) .padding() } .navigationBarTitle("Add Task", displayMode: .inline) } } Por lo que puedo ver, esto parece lo mismo que PlainListStyle , pero supongo que tiene una razón particular para querer usar GroupedListStyle .
Asigne un encabezado a la primera sección de su lista: Section(header: Spacer(minLength: 0))
Descargo de responsabilidad: esto no elimina por completo el espacio superior, pero produce el mismo resultado que la aplicación Configuración nativa.
Nota: Esto funcionó para mí en iOS 14.5
VStack { List { Section(header: Spacer(minLength: 0)) { Text(verbatim: "First Section") } Section { Text(verbatim: "Second Section") } } .listStyle(GroupedListStyle()) }