SwiftUI:动态移动列表滚动上的导航栏项目
SwiftUI: Dynamically move navigationBar items on List scroll
我有 custom navigationBarItems attached to my NavigationBar (the SF Symbols chevron) and when I go to scroll through my items in the ScrollView, the NavigationBar will collapse to .inline,我的物品留在原处。
是否可以将 chevron 锚定到 .navigationBarTitle 的右侧或在滚动时动态移动项目?
这是我当前的代码:
NavigationView {
ScrollView {
eventView()
}
.navigationBarItems(leading:
Button(action: {
// action
}) {
Image(systemName: "chevron.down.circle")
.font(.system(size: 21, weight: .regular))
.offset(x: 169, y: 47)
.foregroundColor(Color(#colorLiteral(...))
}
)
.navigationBarTitle("Upcoming")
}
(我是 SwiftUI 的新手,我知道它还不够好)
非常感谢任何帮助:)
我不确定你想要什么,但这种行为的原因是你的偏移量。
试试这个:
struct ContentView: View {
var body: some View {
NavigationView {
List {
ForEach(UIFont.familyNames, id: \.self) { name in
Text(name)
}
}.navigationBarTitle("Title")
.navigationBarItems(leading:
HStack {
Button(action: {
// action
}) {
HStack {
Text("Upcoming")
Image(systemName: "chevron.down.circle")
.font(.system(size: 21, weight: .regular))
// .offset(x: 169, y: 47)
.foregroundColor(Color.orange)
}
}
})
}
}
}
我有 custom navigationBarItems attached to my NavigationBar (the SF Symbols chevron) and when I go to scroll through my items in the ScrollView, the NavigationBar will collapse to .inline,我的物品留在原处。
是否可以将 chevron 锚定到 .navigationBarTitle 的右侧或在滚动时动态移动项目?
这是我当前的代码:
NavigationView {
ScrollView {
eventView()
}
.navigationBarItems(leading:
Button(action: {
// action
}) {
Image(systemName: "chevron.down.circle")
.font(.system(size: 21, weight: .regular))
.offset(x: 169, y: 47)
.foregroundColor(Color(#colorLiteral(...))
}
)
.navigationBarTitle("Upcoming")
}
(我是 SwiftUI 的新手,我知道它还不够好)
非常感谢任何帮助:)
我不确定你想要什么,但这种行为的原因是你的偏移量。
试试这个:
struct ContentView: View {
var body: some View {
NavigationView {
List {
ForEach(UIFont.familyNames, id: \.self) { name in
Text(name)
}
}.navigationBarTitle("Title")
.navigationBarItems(leading:
HStack {
Button(action: {
// action
}) {
HStack {
Text("Upcoming")
Image(systemName: "chevron.down.circle")
.font(.system(size: 21, weight: .regular))
// .offset(x: 169, y: 47)
.foregroundColor(Color.orange)
}
}
})
}
}
}