[英]SwiftUI TabView not rendering Preview Labels
我正在為 macOS 開發一個 SwiftUI 應用程序。
但是,在預覽 Canvas 以及在新的 Window 上使用視圖時,我無法使TabView
正確呈現。
struct DevView: View {
@State var isOn = true
var body: some View {
TabView {
Toggle(isOn: $isOn) {
Text("Foo")
}
.toggleStyle(SwitchToggleStyle(tint: .green))
.tabItem {
Label("Foo", systemImage: "dot.square")
}
Text("Bar")
.tabItem {
Label("Bar", systemImage: "gear")
}
}.frame(width: 200, height:75)
}
}
struct DevView_Previews: PreviewProvider {
static var previews: some View {
DevView()
}
}
為什么此代碼在預覽版 Canvas 中呈現如下:
而不是正確顯示帶有標簽的選項卡:
備案:XCode 13.2.1,BigSur 11.6.2
在 MacOS 上 SwiftUI 不會在標簽標簽中呈現圖像: https://developer.apple.com/design/human-interface-guidelines/macos/windows-and-views/tab-views/
您必須 go 才能獲得帶有按鈕的自定義解決方案。 這似乎很棘手。 我獲得一半的唯一方法是以下。
這基本上是一個可定制的工具欄。 要在標題欄中沒有它,您必須使用.windowToolbarStyle(.expanded)。 不幸的是,.windowToolbarStyle(.expanded) 必須直接在 WindowGroup 上:
@main
struct test_stack_macOsApp: App {
var body: some Scene {
WindowGroup {
DevView()
.toolbar(id: "myToolbar") {
ToolbarItem(id: "1", placement: .principal) {
Button {
// pass id to view
} label: {
Label("Foo", systemImage: "dot.square")
}
}
ToolbarItem(id: "2") {
Button {
// pass id to view
} label: {
Label("Bar", systemImage: "gear")
}
}
}
.navigationTitle("Foo")
}
.windowToolbarStyle(.expanded)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.