如何将 ScrollViewReader 用于 iOS 14+,部署目标为 iOS 13
How to use ScrollViewReader for iOS 14+ with deployment target of iOS 13
iOS 14 添加了一个新的 ScrollViewReader
视图,您可以将其添加到 ScrollView
或 List
下的视图层次结构中,以便能够滚动到特定视图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()
}
iOS 14 添加了一个新的 ScrollViewReader
视图,您可以将其添加到 ScrollView
或 List
下的视图层次结构中,以便能够滚动到特定视图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()
}