如何使用 SwiftUI 将图像和标签添加到选项卡栏项目
How do I add an image and a label to a tab bar item with SwiftUI
使用此代码我可以设置标签或图像,但不清楚如何设置两者。
var body: some View {
Text("Library")
.font(.title)
// .tabItemLabel(Image("first"))
.tabItemLabel(Text("Library"))
.tag(0)
}
在 SwiftUI Essentials WWDC 演讲中,他们使用此示例代码在选项卡栏项目中同时包含图像和标签:
TabbedView {
OrderForm()
.tabItemLabel {
Image(systemName: "square.and.pencil")
Text("New Order")
}
OrderHistory()
.tabItemLabel {
Image(systemName: "clock.fill")
Text("History")
}
}
但是此时使用这种方法在 Xcode 11 beta 中添加 `tabItemLabel` 会引发编译错误,无法使用。所以这可能是一个错误,可能会在下一个版本中修复。
更新:
此问题已通过 Xcode 11 beta 3 修复。 tabItemLabel
重命名为 tabItem
并且可以像下面这样使用:
.tabItem {
Image(systemName: "circle")
Text("Tab1")
}
iOS 13 Beta 2 的官方 Release Notes 有一个解决方法:
Workaround: Wrap the views you pass to the modifier in a VStack:
MyView()
.tabItemLabel(VStack {
Image("resourceName")
Text("Item")
})
注意:此解决方法不适用于 Image(systemImage: "")
既然 Xcode 11 GM 已经发布,下面是您如何实现带有图像和标签的 TabView 项目
.tabItem {
Image(systemName: "phone.fill")
Text("First Tab")
}
您也可以在 iOS 14.0+
中使用 Label
.tabItem {
Label("First Tab", systemImage: "phone.fill")
}
使用此代码我可以设置标签或图像,但不清楚如何设置两者。
var body: some View {
Text("Library")
.font(.title)
// .tabItemLabel(Image("first"))
.tabItemLabel(Text("Library"))
.tag(0)
}
在 SwiftUI Essentials WWDC 演讲中,他们使用此示例代码在选项卡栏项目中同时包含图像和标签:
TabbedView {
OrderForm()
.tabItemLabel {
Image(systemName: "square.and.pencil")
Text("New Order")
}
OrderHistory()
.tabItemLabel {
Image(systemName: "clock.fill")
Text("History")
}
}
更新:
此问题已通过 Xcode 11 beta 3 修复。 tabItemLabel
重命名为 tabItem
并且可以像下面这样使用:
.tabItem {
Image(systemName: "circle")
Text("Tab1")
}
iOS 13 Beta 2 的官方 Release Notes 有一个解决方法:
Workaround: Wrap the views you pass to the modifier in a VStack:
MyView()
.tabItemLabel(VStack {
Image("resourceName")
Text("Item")
})
注意:此解决方法不适用于 Image(systemImage: "")
既然 Xcode 11 GM 已经发布,下面是您如何实现带有图像和标签的 TabView 项目
.tabItem {
Image(systemName: "phone.fill")
Text("First Tab")
}
您也可以在 iOS 14.0+
中使用 Label.tabItem {
Label("First Tab", systemImage: "phone.fill")
}