web-dev-qa-db-fra.com

Comment faire de Swiftui View Fullscreen?

Comme le titre dit déjà que j'essaie de faire une vue plein écran (faites-le s'étendre sur le SafeArea), mais SwiftUI semble toujours aligner les vues sur le safeArea.

Après avoir recherché cela pendant un moment, j'ai trouvé .edgesIgnoringSafeArea(.all) qui semble une manière assez simple de le faire. Le problème est que cela ne fonctionne pas. La vue n'est toujours pas plein écran. Voici un exemple de code:

struct ContentView : View {
    var body: some View {
        Text("Test")
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
            .edgesIgnoringSafeArea(.all)
            .background(Color.red)
    }
}
9
timfraedrich

Selon Apple Documentation de iOS 14, vous pouvez utiliser FullScreencover (article: Ondismiss: Contenu :)

Et voici un exemple de code:

struct ContentView: View {
    @State private var isFullScreen = false
    var body: some View {
        ZStack{
        Color.yellow.edgesIgnoringSafeArea(.all)
        Text("Hello, FullScreen!")
            .padding()
            .background(Color.blue)
            .foregroundColor(.green)
            .cornerRadius(8)
            .fullScreenCover(isPresented: $isFullScreen) {
                FullScreen(isFullScreen: $isFullScreen)
            }
            .onTapGesture {
                isFullScreen.toggle()
            }
    }
    }
}

struct FullScreen: View {
    @Binding var isFullScreen: Bool
    
    var body: some View {
        ZStack {
            Color.red.edgesIgnoringSafeArea(.all)
            Text("This is full screen!!")
                .onTapGesture {
                    self.isFullScreen.toggle()
                }
            
        }
    }
}
1
Islom Alimov

L'application de réalité augmentée avec SWIFTUI a également un problème dans la saisie de plein écran. (Xcode 12.3, SWIFTUI 5.3)

struct ContentView : View {
    var body: some View {
        return ARViewContainer().edgesIgnoringSafeArea(.all)
    }
}

Le code ci-dessus provient du modèle AR. Cependant, ça ne marche pas.

La solution est délicate: vous devez définir "LaunchScreen.storyboard" comme "Fichier d'écran de lancement" dans "[YourTarget] -> Général -> Icônes de l'application et lancement d'images". S'il n'y a pas de "Launchscreen.storyboard" dans le projet, il peut toujours fonctionner en entrant "Launchscreen" dans ce domaine.

J'ai trouvé une discussion similaire sur Apple qui explique la raison potentielle de l'échec:

Si cela n'est pas défini correctement, il semble que votre application se lance dans un mode de compatibilité qui est la boîte à lettres de votre application.

0
Gaoping