我正在 SwiftUI 中为 macOS 编写一个音乐应用程序,希望它的工具栏表现如下:标题位于左侧的图稿,中间的播放控件,右侧的检查器切换,如下所示。不过,好像不能同时正确铺设。
因此,我在这里编写了一个小演示来重现我的问题。
struct ContentView: View {
var body: some View {
Text("Hello, world!")
.toolbar {
ToolbarItem(placement: .navigation) {
Button("Left") { }
}
ToolbarItem(placement: .principal) {
Button("Center") { }
}
ToolbarItem(placement: .primaryAction) {
Button("Right") { }
}
}
}
}
正确的按钮显示在错误的位置。但如果我删除左侧和中心按钮,右侧按钮将按预期正确显示在窗口右侧。
如何解决这个问题,并同时显示左、中、右组件?
您可以添加仅包含
ToolbarItem
的
Spacer
.toolbar {
ToolbarItem(placement: .navigation) {
Button("Left") { }
}
ToolbarItem(placement: .principal) {
Button("Center") { }
}
ToolbarItem {
Spacer()
}
ToolbarItem(placement: .primaryAction) {
Button("Right") { }
}
}
.toolbar {
ToolbarItem(placement: .navigation) {
Button("Left") { }
}
ToolbarItem(placement: .principal) {
Button("Center") { }
}
ToolbarItemGroup(placement: .primaryAction) {
Spacer()
Button("Right") { }
}
}
我认为 Joakim 的答案可以改进一点。我们可以将其包装在 ToolbarItemGroup 中,而不是创建 2 个 ToolbarItem。