在 iOS 13 上以编程方式滚动 SwiftUI ScrollView

Posted

技术标签:

【中文标题】在 iOS 13 上以编程方式滚动 SwiftUI ScrollView【英文标题】:Programmatically Scroll SwiftUI ScrollView on iOS 13 【发布时间】:2021-03-24 20:27:02 【问题描述】:

据我了解,对于 ios 14,您可以使用 ScrollViewReader 随着滚动视图中的内容发生变化而自动向上或向下滚动视图。

我处于必须支持 iOS 13 的情况。有没有办法,甚至是一种 hacky 方式,以编程方式在 iOS 13 中滚动滚动视图?

【问题讨论】:

这是否回答了您的问题***.com/a/60855853/12299030? 【参考方案1】:

要在 iOS 13 上执行此操作,您需要为 UIScrollView 创建一个 SwiftUI 包装器,并使用 UIKit 方法来实现。

幸运的是,有几个开源软件包可以让您更轻松地完成这项工作。其中之一是https://github.com/Amzd/ScrollViewProxy。我过去使用过这个包,效果很好。

例子:

ScrollView  proxy in
  VStack 
    Text("A").scrollId("A")
    Text("B").scrollId("B")
    Text("C").scrollId("C")

    Button("Scroll to C") 
      proxy.scrollTo("C", alignment: .center)
    

    Button("Scroll down") 
      proxy.scrollTo(.bottom)
    
  

【讨论】:

不幸的是,我无法让 ScrollViewProxy 库工作...

以上是关于在 iOS 13 上以编程方式滚动 SwiftUI ScrollView的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 11 上以编程方式滚动 UISearchController 的搜索栏不会消失

如何以编程方式在 SwiftUI 中滚动?

SwiftUI Horizo​​ntal ScrollView 项目在 iOS 14.3 中滚动时变得不可见,但在 iOS 13 中工作正常

在 iOS 上以编程方式向按钮添加操作

在 iOS7+ 上以编程方式打开蓝牙的任何方式

如何在 iOS 上以编程方式创建选项卡视图