【问题标题】:How to disable ScrollView Bounce In SwiftUI如何在 SwiftUI 中禁用 ScrollView 弹跳
【发布时间】:2020-03-07 00:42:05
【问题描述】:

任何Modifier 可用于阻止ScrollViewswiftUI 中的反弹?

struct RoomDetailsView: View {

    var body: some View {
        ScrollView(showsIndicators: false) {
            Image("test")
            Text("Hello Text")
            ...
            ...
        }
    }
}

我尝试了下面的代码,但它对我不起作用。好像已经弃用了

ScrollView(alwaysBounceVertical: true) {
       Image("test")
       Text("Hello Text")
       ...
       ...
}

【问题讨论】:

  • hmm.. 我没有观察到在所描述的场景中有任何反弹。那么您是要“停止”还是“添加”,因为在第二个代码块中,您似乎尝试启用它,但是有问题要禁用它。
  • 我想在滚动视图中停止反弹。较早的第二个块正在工作。但现在我没有找到任何解决方案,我当前的代码看起来像第一个块。
  • 你找到解决办法了吗?
  • 找不到解决办法
  • 对于 ScrollView 中的静态内容,可以使用SwiftUI: Make ScrollView scrollable only if it exceeds the height of the screen 的解决方案。它不适用于活动内容,因为基于 .disabled 修饰符。

标签: scrollview swiftui bounce


【解决方案1】:

您可以使用SwiftUI-Introspect 库:

ScrollView {
    // some content
}
.introspectScrollView { scrollView in
    scrollView.alwaysBounceVertical = false
}

【讨论】:

    【解决方案2】:

    尝试使用这行代码:

    UIScrollView.appearance().bounces = false
    

    你可以这样使用它:-

    struct RoomDetailsView: View {
       init() {
          UIScrollView.appearance().bounces = false
       }
    
       var body: some View {
          ScrollView(showsIndicators: false) {
             Image("test")
             Text("Hello Text")
             ...
             ...
              }
          }
      }
    

    或者您可以在 AppDelegate 中编写此行,以将此行为贯穿到您的应用中。

     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        UIScrollView.appearance().bounces = false
     }
    

    【讨论】:

    • 第一个不会改变我应用中的所有滚动视图吗?
    • 是的,@DiNerd 第一个最终会改变整个应用程序的外观,这是实际的声明,下面只是它的实现示例。您可以使用以下两种方式中的任何一种来实现它。
    猜你喜欢
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多