Saltar al contenido

¿Cómo cambiar el color de fondo de un formulario en SwiftUI?

Solución:

Una solución de trabajo:

Todos los SwiftUI Lists están respaldados por un UITableViewen iOS. por lo que debe cambiar el color de fondo de el tableView. Pero desde Color y UIColor los valores son ligeramente diferentes, puede deshacerse de la UIColor.

struct ContentView: View {
    
    init(){
        UITableView.appearance().backgroundColor = .clear
    }
    
    @State var value = ""
    
    var body: some View {
        Form {
            Section(header: Text("First Name")) {
                TextField("First Name", text: $value)
            }
            Section(header: Text("Last Name")) {
                TextField("Last Name", text: $value)
            }
        }
        .foregroundColor(Color.blue)
        .background(Color.yellow)
    }
}

Ahora puedes usar Cualquier fondo (incluyendo todos Colors) quieres

Avance

Tenga en cuenta que esas áreas blancas superior e inferior son son seguras y puedes usar .edgesIgnoringSafeArea() modificador para deshacerse de ellos.


Restaurar

Ya que UITableView.appearance().backgroundColor se aplica a nivel mundial, puede utilizar .onAppear modificador para cambiarlo en diferentes vistas (ya que es un cambio global). Entonces puedes usar otro onAppear o onDisappear para reinicialo de vuelta a lo que quieres.

Y los colores predeterminados son:

UIColor.systemGroupedBackground Para el estilo agrupado. Y

UIColor.systemBackground Para el estilo sencillo.

Y ambos tienen soporte automático tanto para el modo oscuro como para el modo claro.

prueba esto

.onAppear {
   UITableView.appearance().backgroundColor = .blue
}

La respuesta aceptada por Mojtaba Hosseini, arriba, funciona pero la declaración init () no es un buen lugar para la UITableView declaración. Esto se debe a que “codifica” los parámetros de inicio de ContentView. En este caso no tiene ninguno, así que todo funciona, pero si un @ObservedObject se agregó a la vista, entonces esto rompería la función init.

Mucho más simple simplemente agregar la declaración UITable al body, devuelve explícitamente el Form y borra el init().

var body: some View {
    UITableView.appearance().backgroundColor = .clear
    return Form {...}
 }

Sin embargo, establecer el color de fondo en el Form normalmente funciona como se esperaba. El hecho de que no esté funcionando ContentView la pantalla puede ser un error.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *