如何将 ScrollViewReader 用于 iOS 14+,部署目标为 iOS 13

How to use ScrollViewReader for iOS 14+ with deployment target of iOS 13

iOS 14 添加了一个新的 ScrollViewReader 视图,您可以将其添加到 ScrollViewList 下的视图层次结构中,以便能够滚动到特定视图id。但是,当您的部署目标是 iOS 13 时如何添加它,而不通过用 if #available?

包装它来复制您的视图层次结构
List {
    ScrollViewReader { reader in //FIXME: 'ScrollViewReader' is only available in iOS 14.0 or newer
        Section(header:
            Text("Header")
                .id(0)
        ) {
            ForEach(items) { item in
                ItemCell()
            }
        }
        
        //for an example
        if #available(iOS 14.0, *) {
            Button("Scroll to Top") {
                reader.scrollTo(0)
            }
        }
    }
}

只需为您的 ScrollView 的“内脏”定义一个单独的 ContentView,然后您可以使用 if #available(iOS 14.0, *) 有选择地包含一个 ScrollViewReader:

if #available(iOS 14.0, *) {
    ScrollViewReader { reader in
        ContentView()
    }
} else {
    ContentView()
}