【问题标题】:UIScrollView won't scroll with content view insideUIScrollView 不会随着里面的内容视图滚动
【发布时间】:2016-09-10 10:54:18
【问题描述】:

UIScrollView 有问题。我有这样的设置:

我在第一张图片中固定了一个滚动视图,包括尾随、前导、顶部和底部约束。在第二张图片中,我在滚动视图中放置了一个相同尺寸的 UIView(我计划在其中添加内容)。它固定在滚动视图上,并且水平和垂直居中。当我现在尝试滚动时,似乎根本没有注册任何触摸。我设置了一个大的内容大小:

override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)

        print("The scroll views height is \(scrollView.frame.size.height)")
        scrollView.contentSize = CGSize(width: scrollView.frame.size.width, height: 1000)
        print("The scroll view content height is: \(scrollView.contentSize.height)")
    }

我还尽可能地启用了用户交互。我正在使用委托方法scrollViewDidScroll(scrollView: UIScrollView) 来检查是否正在注册触摸并且它们根本没有。我在这里做错了什么?

【问题讨论】:

标签: ios uiscrollview


【解决方案1】:

希望这会对你有所帮助,许多人都面临这个问题,我希望我的解决方案能够为开发人员提供帮助。

您的视图层次结构应该是这样的:-

View (main view of my UIViewController) – with
-ContainerScrl
--Scroll View (UIScrollView)
---ViewInsideScrl 
----Content1 
----Content2 (etc) 

因为,ScrollView 只有在其 Content Size 大于 Scrollview 的 frame 时才会滚动。

现在小鬼来了。部分约束应该是这样的:-

对 ContainerScrl 进行约束,然后 Scroll View 应该从所有方向固定到 ContainerScrl 并且 ViewInsideScrl 应该固定到 Scroll View。现在它会给出类似可滚动内容大小歧义的警告。

看,如果你给 ViewInsideScrl 的宽度和高度等约束应该等于 ContainerScrl,所有约束错误消息都会消失,但它不会滚动,因为框架等于内容大小,假设你希望它滚动在水平方向,然后只给两个视图提供相等的高度约束,并给 ViewInsideScrl 宽度约束 w.r.t ContainerScrl 之类的比例约束 ViewInsideScrl = 2* ContainerScrl ; 它会使滚动的内容比框架更大。

让我们试试这个,如果问题没有得到解决,我们会进一步研究。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2019-06-17
    • 1970-01-01
    • 2018-05-03
    • 2013-05-26
    • 2013-11-22
    • 2016-10-20
    相关资源
    最近更新 更多