SwiftUI visualizzi il layout del contenuto inaspettatamente pop / salti su appaiono?


16

Quando si passa a una nuova vista con un modulo o un elenco (raggruppato), il contenuto appare a circa un quarto di distanza dalla parte inferiore del titolo della vista di navigazione, quindi "si apre" fino alla posizione corretta circa mezzo secondo dopo. Molto brutto. Non sei sicuro che si tratti di un bug SwiftUI o sto strutturando qualcosa in modo errato?

Ho provato questo sia sul simulatore che sul dispositivo con gli stessi risultati.

Sto pensando che abbia qualcosa a che fare con il modo in cui vengono gestiti i collegamenti di navigazione? Ogni collegamento di navigazione chiama init () nella sua vista di destinazione quando appare ContentView. Per me questo non ha senso, il init () di destinazione non dovrebbe essere chiamato solo nel momento in cui un utente fa effettivamente clic sul collegamento di navigazione?

L'ho provato anche con un foglio e il problema non esiste con i fogli, solo quando si utilizzano collegamenti di navigazione con moduli o elenchi in stile raggruppati.

Codice da una nuovissima applicazione a vista singola:

struct ContentView: View {

    var body: some View {
        NavigationView {
            NavigationLink(destination: TestView()) {
                Text("Test Link")
            }
        .navigationBarTitle("Content View")
        }
    }

}

struct TestView: View {

    var body: some View {
        Form {
            Text("Test View")
        }
        .navigationBarTitle("Test View")
    }

}

Risposte:


10

Fornire una sezione con un testo di intestazione risolve il problema, anche se il testo è vuoto. Anche se questo lascerà uno spazio tra il titolo di navigazione e la prima riga.

Funziona con moduli e liste in stile raggruppato.

struct TestView: View {

    var body: some View {
        Form {
            Section(header: Text("")) {
                Text("Test View")
            }
        }
        .nvigationBarTitle("Test View")
    }
}

1
Ho provato entrambe le soluzioni in questo post, ancora accadendo. Cos'altro potrebbe succedere? Così strano.
Lkabo,

0

Ho avuto questo problema con un elenco che è stato inviato tramite NavigationLink da un elenco GroupedListStyle. Quando lo fai, allora sembra che SwiftUI consideri anche l'Elenco push come raggruppato. In questo caso, reimpostare solo ListStyle dovrebbe funzionare:

List { ... }.listStyle(DefaultListStyle())
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.