web-dev-qa-db-fra.com

SwiftUI: Dimensionner un popover pour l'adapter

J'ai un petit échantillon popover dans lequel un bouton déclenche un popover. Le popover ne contient qu'un peu d'interface utilisateur, deux boutons dans ce cas, mais il prend toujours beaucoup d'espace au lieu de s'enrouler soigneusement autour du contenu comme je suis habitué à UIKit. Comment adapter le popover à la taille du contenu?

Capture d'écran du simulateur iPad et code ci-dessous:

Screenshot of the button with the popover open

struct ContentView: View {

    @State private var showingPopupA = false

    var body: some View {
        HStack {
            Button(action: {
                self.showingPopupA.toggle()
            }, label: {
                Text("Button")
            }).popover(isPresented: self.$showingPopupA) {
                VStack {
                    Button(action: {
                        // Do something
                        self.showingPopupA = false
                    }) {
                        Text("Option A")
                    }
                    Button(action: {
                        // Do something
                        self.showingPopupA = false
                    }) {
                        Text("Option B")
                    }
                }.background(Color.red)
            }
        }
    }
}

Capture d'écran de macOS: macOS screenshot built with Xcode 11.0

7
niklassaers

Sur macOS, le code ci-dessous ressemblera à ceci:

enter image description here

struct PopoverExample: View {

    @State private var showingPopupA:Bool = false 
    var body: some View {
        HStack {
            Button(action: {
                self.showingPopupA.toggle()
            }, label: {
                Text("Button")
            }).popover(isPresented: self.$showingPopupA) {
                VStack {
                    Button(action: {
                        // Do something
                        self.showingPopupA = false
                    }) {
                        Text("Option A")
                    }
                    Button(action: {
                        // Do something
                        self.showingPopupA = false
                    }) {
                        Text("Option B")
                    }
                }.background(Color.red)
            }
        }
        .frame( maxWidth: .infinity, maxHeight: .infinity)
    }
}

Projet lien

1
Marc T.

Il semble que cela ait été corrigé dans iOS 13.4/Xcode 11.4 Beta. Le popover se redimensionnera quel que soit son contenu.

1
choxi