在 ScrollView 中阻止向下滚动 - SwiftUI

Posted

技术标签:

【中文标题】在 ScrollView 中阻止向下滚动 - SwiftUI【英文标题】:Block scroll down in 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 为滚动视图添加背景。 即使它很暗或有图像我只是不希望视图向下滚动 【参考方案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

以上是关于在 ScrollView 中阻止向下滚动 - SwiftUI的主要内容,如果未能解决你的问题,请参考以下文章

排列多个scrollView

Scrollview 不显示其内容的顶部而不在 iphone 应用程序中向下滚动

UIScrollView 不向下滚动

ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方

ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方案

当滚动超出工作表中的限制时,防止在 ScrollView 顶部的图像上方填充