如何在 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

效果很好。但是,我仍在寻找更好的解决方案。