如何使用 iOS 14+ 的 ScrollViewReader 和 iOS 13 的部署目标
Posted
技术标签:
【中文标题】如何使用 iOS 14+ 的 ScrollViewReader 和 iOS 13 的部署目标【英文标题】:How to use ScrollViewReader for iOS 14+ with deployment target of iOS 13 【发布时间】:2020-07-24 18:31:57 【问题描述】: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)
【问题讨论】:
我认为不复制您的视图层次结构并使用if #available
是不可能的,但如果是的话,我会对结果感兴趣。
【参考方案1】:
只需为ScrollView
的“内脏”定义一个单独的ContentView
,然后您可以使用if #available(iOS 14.0, *)
选择性地包含ScrollViewReader
:
if #available(iOS 14.0, *)
ScrollViewReader reader in
ContentView()
else
ContentView()
【讨论】:
以上是关于如何使用 iOS 14+ 的 ScrollViewReader 和 iOS 13 的部署目标的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI Horizontal ScrollView 项目在 iOS 14.3 中滚动时变得不可见,但在 iOS 13 中工作正常
如何使用AutoLayout(iOS / Xamarin.iOS)使ScrollView适合其内容?
如何使用 AutoLayout (iOS/Xamarin.iOS) 使 ScrollView 适合其内容?