如何在SwiftUI和iOS 14中为领先的navigationBarItems添加徽章?
如何在SwiftUI和iOS 14中向如何在SwiftUI和iOS 14中为领先的navigationBarItems添加徽章?,ios,swift,swiftui,badge,navigationbaritems,Ios,Swift,Swiftui,Badge,Navigationbaritems,如何在SwiftUI和iOS 14中向navigationBarItems添加徽章 我在网上找不到任何东西 例如,我想在主要的导航栏项上添加一个徽章: var body: some View { NavigationView { ZStack { VStack(spacing: 0) { Text("Peanut") .padding(-10)
navigationBarItems
添加徽章
我在网上找不到任何东西
例如,我想在主要的导航栏项上添加一个徽章:
var body: some View {
NavigationView {
ZStack {
VStack(spacing: 0) {
Text("Peanut")
.padding(-10)
.navigationBarTitle(Text("HomeTitle"), displayMode: .inline)
.navigationBarItems(leading:
HStack {
NavigationLink(destination: Notifications()) {
Image(systemName: "bell")
.font(.system(size: 20))
}.foregroundColor(.white)
}, trailing:
HStack {
NavigationLink(destination: Settings()) {
Image(systemName: "gearshape")
.font(.system(size: 20))
}.foregroundColor(.white)
})
}
}
}
}
您可以创建自定义的徽章视图:
struct Badge: View {
let count: Int
var body: some View {
ZStack(alignment: .topTrailing) {
Color.clear
Text(String(count))
.font(.system(size: 16))
.padding(5)
.background(Color.red)
.clipShape(Circle())
// custom positioning in the top-right corner
.alignmentGuide(.top) { $0[.bottom] }
.alignmentGuide(.trailing) { $0[.trailing] - $0.width * 0.25 }
}
}
}
并将其用作覆盖层
:
struct ContentView: View {
var body: some View {
NavigationView {
ZStack {
VStack(spacing: 0) {
Text("Peanut")
.padding(-10)
.navigationBarTitle(Text("HomeTitle"), displayMode: .inline)
.navigationBarItems(leading: leadingBarItems)
}
}
}
}
var leadingBarItems: some View {
NavigationLink(destination: Text("Notifications")) {
Image(systemName: "bell")
.font(.system(size: 20))
}
.foregroundColor(.primary)
.padding(5)
.overlay(Badge(count: 3))
}
}
注意
徽章视图使用对齐指南进行定位。有关更多信息,请参阅:
我喜欢使用对齐导轨。