UIScrollView 不会随着里面的内容视图滚动
Posted
技术标签:
【中文标题】UIScrollView 不会随着里面的内容视图滚动【英文标题】:UIScrollView won't scroll with content view inside 【发布时间】: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)
来检查是否正在注册触摸并且它们根本没有。我在这里做错了什么?
【问题讨论】:
试试这个,教程在objective c,但概念是一样的,iosfirst.blogspot.com/2016/08/… @kex 你的问题解决了与否 【参考方案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 ; 它会使滚动的内容比框架更大。
让我们试试这个,如果问题没有得到解决,我们会进一步研究。
【讨论】:
以上是关于UIScrollView 不会随着里面的内容视图滚动的主要内容,如果未能解决你的问题,请参考以下文章
滚动 uiscrollview 时淡化 UITextView
将视图加载到 UIScrollView 并让里面的内容正常工作