如何在 SwiftUI 中自动检测 NavigationBarTitle displayMode 变为 .inline 或 .large?
How to automatically detect NavigationBarTitle displayMode become .inline or .large in SwiftUI?
我在 navigationView
中有一个 List
,我想在滚动列表时更改 List
Section
文本并且 navigationBarTitle
变为.inline
或 .large
这是我的代码:
import SwiftUI
struct ContentView: View {
@State private var scrolledUp = false
var body: some View {
NavigationView {
if scrolledUp {
List {
Section(header: Text("Moved UP"))
{
Text("Line1").bold()
Text("Line2").bold()
Text("Line2").bold()
}
.navigationBarTitle("Setting")
}
} else {
List {
Section(header: Text("Not Moved"))
{
Text("Line1").bold()
Text("Line2").bold()
Text("Line2").bold()
}
}
.navigationBarTitle("Setting")
}
}
}
}
我怎么知道list
被滚动了,navigationBar
变成了.title
?
现在我使用 geometryReader
来检测 List
section
header
的 y 位置。滚动期间。如果位置小于80,则navigationBarTitle
改为.title
。
效果很好。但是,我仍在寻找更好的解决方案。
我在 navigationView
中有一个 List
,我想在滚动列表时更改 List
Section
文本并且 navigationBarTitle
变为.inline
或 .large
这是我的代码:
import SwiftUI
struct ContentView: View {
@State private var scrolledUp = false
var body: some View {
NavigationView {
if scrolledUp {
List {
Section(header: Text("Moved UP"))
{
Text("Line1").bold()
Text("Line2").bold()
Text("Line2").bold()
}
.navigationBarTitle("Setting")
}
} else {
List {
Section(header: Text("Not Moved"))
{
Text("Line1").bold()
Text("Line2").bold()
Text("Line2").bold()
}
}
.navigationBarTitle("Setting")
}
}
}
}
我怎么知道list
被滚动了,navigationBar
变成了.title
?
现在我使用 geometryReader
来检测 List
section
header
的 y 位置。滚动期间。如果位置小于80,则navigationBarTitle
改为.title
。
效果很好。但是,我仍在寻找更好的解决方案。