web-dev-qa-db-ja.com

SwiftUI:ポップオーバーのサイズを合わせる

ボタンがポップオーバーをトリガーする小さなポップオーバーサンプルがあります。ポップオーバーには、UIのほんの少し(この場合は2つのボタン)しか含まれていませんが、UIKitのようにコンテンツの周りをきちんと折り返すのではなく、多くのスペースを占有します。ポップオーバーをコンテンツのサイズに合わせるにはどうすればよいですか?

IPadシミュレーターのスクリーンショットと以下のコード:

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)
            }
        }
    }
}

MacOSのスクリーンショット: macOS screenshot built with Xcode 11.0

7
niklassaers

MacOSでは、以下のコードは次のようになります。

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)
    }
}

プロジェクト link

1
Marc T.

これはiOS 13.4/Xcode 11.4 Betaで修正されたようです。ポップオーバーは、現在の内容に合わせてサイズ変更されます。

1
choxi