我正在开发一个 macOS 应用程序,其视图层是用 SwiftUI 编写的。我知道 iOS 工具栏至少可以更改背景颜色,但是当我尝试在 macOS 中执行此操作时,它的行为并不符合我的预期。
这是一个(简化的)示例:
struct ContentView: View {
var body: some View {
NavigationView {
Collections()
.layoutPriority(0)
Photos()
.frame(maxWidth: .infinity, minHeight: 300, maxHeight: .infinity)
.background(Color.Alt.black)
.layoutPriority(1)
}
.toolbar {
Toolbar().background(Color.red500)
}
}
}
struct Toolbar: View {
var body: some View {
Group {
Slider(value: 250, in: 150...400) {
Text("Toolbar.PreviewSize")
} minimumValueLabel: {
Image(systemName: "photo").resizable().scaledToFit().frame(width: 15)
} maximumValueLabel: {
Image(systemName: "photo").resizable().scaledToFit().frame(width: 23)
} onEditingChanged: { _ in
// do nothing
}.frame(minWidth: 200)
Spacer()
Text("Toolbar.SelectionCount")
Spacer()
AddPhotosButton()
}
}
}
这会产生类似这样的结果,正如您所看到的,它不会将背景颜色应用于整个工具栏,而仅应用于工具栏中的项目:
我想我可以自己做WindowToolbarStyle
风格,但没有关于协议的文档!
如果我制作自己的工具栏作为View
而不是与.toolbar
修改器,当侧边栏折叠时,我无法读取窗口交通按钮的安全区域插入,导致一团糟:
谢谢你的帮助!
我认为您遇到的问题是工具栏有一个您需要明确忽略的“安全区域”。这可以通过以下代码来完成。
.toolbar {
// your toolbar code
}.background(Color.gray.ignoresSafeArea())
The toolbarBackground
修饰符仅适用于 macOS 13.0 及更高版本,因此如果您需要向后兼容性,它不会是一个通用答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)