我的 ScrollView 没有垂直滚动

Posted

技术标签:

【中文标题】我的 ScrollView 没有垂直滚动【英文标题】:My ScrollView is not scrolling vertically 【发布时间】:2018-02-06 10:32:19 【问题描述】:

我正在使用 Swift 4 在 Xcode 9 中编写一个应用程序,并且我已经将一个 UIScrollview 添加到一个视图中,该视图旨在显示一个高度为 3030 像素的 jPeg。我已将滚动视图添加到我的视图中,并在 IB 的 Outlets 中分配了代表。我已将名为 scrollView 的 IBOutlet 附加到 UIScrollview,并将带有 jPeg 的 UIImageView 添加到 UIScrollview。我将 UIScrollView 的大小设置为 375W 和 620H,然后将 UIImageView 设置为 375W 和 3030H。这应该会完成 Interface builder 中的工作。

在控制器中,我将 UIScrollViewDelegate 添加到了类中,并将下面的代码添加到了 ViewDidLoad

    //scrollView.delegate = self
    scrollView.contentSize = CGSize(width: 375, height: 3040)

我已经注释掉了代理行,就像我在 IB 中所做的那样。当我运行该应用程序时,屏幕上会出现图像,但是当我尝试滚动时,它几乎不会滚动超过一个屏幕。我错过了什么?

【问题讨论】:

您是否使用自动布局添加了滚动视图? 你能把项目放在 GitHub 中并提供 url 是的,我确实使用自动布局在 IB 中添加了它 抱歉 Nischal,我无法添加该项目,因为它非常大并且受非免责声明文档的约束 只是带有演示项目的滚动视图部分,如果你添加它我可以帮助你 【参考方案1】:

您需要在滚动视图中添加 UIView,然后将该视图顶部/底部/前导/尾随 0 添加到滚动视图,然后在视图中添加图像视图并将图像视图底部约束添加到该视图, 这样你的滚动视图就可以正常工作了。

详情请参考下图。

【讨论】:

嘿@User 你觉得我的回答有帮助吗?【参考方案2】:

您必须将滚动视图放置在 UIView 中,并将另一个 UIView 放置在滚动视图中。

    外部视图约束:前导、尾随、顶部和底部 - 0 滚动视图约束:前导、尾随、顶部和底部 - 0 内视图约束:前导、尾随和顶部到 Superview,宽度与外视图相等,底部空间为 -250,高度等于 900(内容的高度) 立即设置您的内容大小。

【讨论】:

【参考方案3】:

您可以实现如下图截图

    //Height Constant of image
    @IBOutlet weak var ConstHeight: NSLayoutConstraint!

    override func viewDidLoad() 
        super.viewDidLoad()


        if #available(ios 11.0, *) 
            self.scrollView.contentInsetAdjustmentBehavior = .never
        else
            self.automaticallyAdjustsScrollViewInsets = false

        

        //You can change height on here too
         self.ConstHeight.constant = 800

    

【讨论】:

以上是关于我的 ScrollView 没有垂直滚动的主要内容,如果未能解决你的问题,请参考以下文章

垂直滚动不调用scrollView的减速委托方法?

在 SwiftUI ScrollView 中停止垂直滚动

ScrollView中的Horizo​​ntal RecyclerView:垂直滚动时如何获得焦点?

水平和垂直滚动 Usign UICollectionView 和 ScrollView

两个 ScrollView 在彼此之上?

ScrollView - 手势识别器 - 垂直滑动