【问题标题】:SwiftUI ScrollView is not able to disable vertical bounce?SwiftUI ScrollView 不能禁用垂直反弹?
【发布时间】:2019-11-29 15:02:15
【问题描述】:

在带有 ScrollView(alwaysBounceVertical: false) 的初始化程序中有一个属性,但我似乎再也找不到了。

有谁知道如何禁用 SwiftUI ScrollView 上的垂直反弹/过度滚动?

【问题讨论】:

    标签: scrollview swiftui bounce


    【解决方案1】:

    是的,它已从 ScrollView 的初始化程序中删除,现在您必须更新 UIScrollView 的外观以限制滚动。

     UIScrollView.appearance().bounces = false 
    

    此行将限制滚动,您可以在 AppDelegate(didFinishLaunching) 或 View 的 init() 方法中应用它。

    【讨论】:

    • 我们可以使用 UIScrollView().alwaysBounceVertical = false 吗??
    • @NabeelNazir 我想这行不通,你建议的方式基本上是 UIScrollView 的一个实例,所以为此,你必须有一个实例,这不可能斯威夫特用户界面。所以将它应用到它的外观上最终会更新或覆盖 UIScrollView 类的底层外观,因此它将适用于整个应用程序。我已经用这个答案详细解释了:-stackoverflow.com/a/59897811/6445871,看看吧。
    • 我从某处得知外观()不再具有反弹属性,是真的吗?如果是,那么禁用滚动视图反弹的另一种方法是什么。
    • @NabeelNazir 我已经浏览了 UIScrollView 文档,基类中提到的所有属性都可以应用于外观()。我在我的应用程序中实现了同样的东西,它对我来说很好。但是,如果您想在特定屏幕上禁用它,那么您必须在视图 onDisappear 中启用它。
    • 我对这个解决方案的问题是,如果没有弹跳我不能有大的导航标题。但是随着弹跳有很多闪烁。
    【解决方案2】:

    是的,它在 Beta 4 中发生了变化:

    ScrollView(.vertical, showsIndicators: false) { ... }
    

    新的初始化器是:

    public init(_ axes: Axis.Set = .vertical, showIndicators: Bool = true, content: () -> Content)
    

    【讨论】:

    • 可悲的是,这仅适用于 ScrollView 的轴方向。当用户快速滚动时,我需要禁用反弹。在 UIKit 中有一个 scrollView.bounce = false,而在之前的 beta 中有一个 alwaysBounceVertical。但是 sdk 发生了变化,我似乎无法再禁用它了
    • 恐怕 ScrollView 目前非常有限。很多事情你不能用它来做。
    • 啊啊,真可惜!我也这么认为!至少感谢您的宝贵时间!
    【解决方案3】:

    我设法让bounce 消失的唯一方法...

    func setup()->Bool{
        UIScrollView.appearance().bounces = false
        return false
    }
    
    @main
    struct myApp: App {
        private var useless:Bool = setup()
        
        var body: some Scene { [...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 2020-09-23
      • 2020-03-07
      相关资源
      最近更新 更多