ボタンがポップオーバーをトリガーする小さなポップオーバーサンプルがあります。ポップオーバーには、UIのほんの少し(この場合は2つのボタン)しか含まれていませんが、UIKitのようにコンテンツの周りをきちんと折り返すのではなく、多くのスペースを占有します。ポップオーバーをコンテンツのサイズに合わせるにはどうすればよいですか?
IPadシミュレーターのスクリーンショットと以下のコード:
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では、以下のコードは次のようになります。
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
これはiOS 13.4/Xcode 11.4 Betaで修正されたようです。ポップオーバーは、現在の内容に合わせてサイズ変更されます。