50 votes

SwiftUI NavigationView sur iPad Pro

J'utilise le code du didacticiel Apple SwiftUI. Ensuite, j'ai défini le PreviewDevice sur iPad Pro (12,9 pouces). Mais l'aperçu a quelque chose qui ne va pas. Est-ce que quelqu'un sait où est le problème ?

Problème de prévisualisation SwiftUI

85voto

Sondergaard Points 680

Vous pouvez remplacer le splitView par défaut utilisé sur iPad, en faisant en sorte que NavigationView affiche la même vue empilée que vous voyez sur iPhone, en définissant .navigationViewStyle(StackNavigationViewStyle())

Assez utile pendant le développement et le débogage, et lorsque vous n'avez pas encore développé le detailView().

30voto

ideastouch Points 517

Dans mon cas, ce qui a fait la différence, c'était d'utiliser StackNavigationViewStyle et aucun rembourrage n'était nécessaire.

 NavigationView {
  ...
}
.navigationViewStyle(StackNavigationViewStyle())

7voto

NAlexN Points 412

Il semble que la vue principale (celle de gauche) soit masquée sur les iPad sous iOS 13 par conception. La vue principale est là, vous pouvez la retirer du bord gauche de l'écran.

Malheureusement, il n'y a actuellement aucune API pour désactiver ce comportement autre que l'application d'un remplissage différent de zéro pour le bord leading

 var body: some View {
    GeometryReader { geometry in
        NavigationView {
            self.content
        }.padding(.leading, self.leadingPadding(geometry))
    }
}

private func leadingPadding(_ geometry: GeometryProxy) -> CGFloat {
    if UIDevice.current.userInterfaceIdiom == .pad {
        // A hack for correct display of the SplitView in SwiftUI on iPad
        return geometry.size.width < geometry.size.height ? 0.5 : -0.5
    }
    return 0
}

5voto

Vous avez intégré votre corps dans NavigationView. Sur iPad, vous devez faire glisser le tiroir du côté gauche pour afficher votre contenu.

Supprimer NavigationView et observer le comportement

Pour remplacer le comportement par défaut, utilisez le code ci-dessous

NavigationView { ... } .navigationViewStyle(DoubleColumnNavigationViewStyle()) .padding()

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