如何自动检测NavigationBarTitle displayMode在SwiftUI中变成.inline还是.large?

时间:2019-10-31 14:33:52

标签: ios swift swiftui swiftui-list

我在List中有一个navigationView,并且我想在滚动列表并使List变成{{时更改Section navigationBarTitle文本1}}或.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

1 个答案:

答案 0 :(得分:0)

现在,我使用geometryReader来检测List section header的y位置。在滚动过程中。如果位置小于80,则navigationBarTitle更改为.title

它完美地工作。但是,我仍在寻找更好的解决方案。