【问题标题】:Block scroll down in ScrollView - SwiftUI在 ScrollView 中阻止向下滚动 - SwiftUI
【发布时间】:2020-08-08 21:56:50
【问题描述】:

如何阻止向下滚动而只允许向上滚动以避免在滚动时看到顶部矩形上方的空白?

struct ContentView: View {
    
    var body: some View {
        GeometryReader { geo in
            ScrollView {
                Rectangle()
                .frame(width: geo.size.width, height: 400)
                .foregroundColor(.black)
                Spacer()
            }
        }
    }
}

【问题讨论】:

  • 如果您担心空白,可以使用 ZStack 为滚动视图添加背景。
  • 即使它很暗或有图像我只是不希望视图向下滚动

标签: swift swiftui swiftui-scrollview


【解决方案1】:

我假设您想避免弹跳,这是可能的方法(使用 Xcode 12 / iOS 14 测试)

struct ContentView: View {

    var body: some View {
        GeometryReader { geo in
            ScrollView {
                Rectangle()
                .frame(width: geo.size.width, height: 1800)
                .foregroundColor(.black)
                .background(ScrollViewConfigurator {
                    $0?.bounces = false               // << here !!
                })
                Spacer()
            }
        }
    }
}

struct ScrollViewConfigurator: UIViewRepresentable {
    let configure: (UIScrollView?) -> ()
    func makeUIView(context: Context) -> UIView {
        let view = UIView()
        DispatchQueue.main.async {
            configure(view.enclosingScrollView())
        }
        return view
    }

    func updateUIView(_ uiView: UIView, context: Context) {}
}

注意:enclosingScrollView() 助手取自我在 How to scroll List programmatically in SwiftUI? 中的回答

【讨论】:

  • 我会尽快尝试。我只是不明白我应该放什么而不是 enclosureScrollView
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 2020-01-02
  • 2017-11-24
  • 2022-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多