SwiftUI:调整弹出窗口的大小以适合
SwiftUI: Sizing a popover to fit
我有一个弹出窗口小示例,其中一个按钮触发了一个弹出窗口。弹出窗口仅包含一点点 UI,在本例中为两个按钮,但它仍然占用大量 space 而不是像我习惯的 [=23] 那样整齐地环绕内容=]套件。如何使弹出窗口适合内容的大小?
来自 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 的屏幕截图:
在 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 中修复。弹出窗口将根据其内容的大小调整大小。
我有一个弹出窗口小示例,其中一个按钮触发了一个弹出窗口。弹出窗口仅包含一点点 UI,在本例中为两个按钮,但它仍然占用大量 space 而不是像我习惯的 [=23] 那样整齐地环绕内容=]套件。如何使弹出窗口适合内容的大小?
来自 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 的屏幕截图:
在 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 中修复。弹出窗口将根据其内容的大小调整大小。