我看过这篇文章:scrollView not scrolling swift
我看到接受的答案建议此人向UIScrollViews
子视图contentView
添加底部约束。我对每个视图都有以下视图层次结构和约束:
UIView - > UIScrollView(scrollView) - >的UIView(内容查看)
//in the View Controller
self.view.addSubview(coverImage)
scrollView.addSubview(contentView)
view.addSubview(scrollView)
以下是我添加到NSLayoutConstraint
和scrollView
的{{1}}
contentView
我遵循本教程的一般结构,它修复了宽度并具有let tmpViewsDictionary = ["scrollView":self.scrollView, "contentView": self.contentView]
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[scrollView]-0-|",options: [], metrics: nil,views: tmpViewsDictionary))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[scrollView]-0-|",options: [], metrics: nil, views: tmpViewsDictionary))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[contentView]-0-|", options: [], metrics: nil, views: tmpViewsDictionary))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[contentView]-0-|", options: [], metrics: nil, views: tmpViewsDictionary))
self.view.addConstraints([NSLayoutConstraint(item :self.contentView, attribute: .Width, relatedBy: .Equal, toItem: self.view, attribute: .Width , multiplier: 1, constant: 0)])
的灵活高度。
当我添加超出实际父视图大小的内容时,我无法向下滚动以查看其余内容。
似乎它们如何使高度动态并且宽度固定是简单地将scrollView
的子视图限制为具有与UIScrollView
的父级相等的宽度。我成功了,但滚动仍然没有发生。谢谢您的帮助!
以下是此视图的完整UIScrollView
:
https://gist.github.com/ebbnormal/90c35c435320e0ec1307e95f575119bf
更新
我使用Daniels的建议,即将ViewController
的底部移到contentView
底部。
因此,在调试视图层次结构后,我发现scrollView
被设置为小于其父视图高度,这似乎源于自动布局约束设置contentView
{{1} } self.bottom
contentView
label.bottom
的{{1}}。我从来没有设置这个约束,我不知道如何摆脱它。
以下是ViewHierarchy中的内容,其中突出显示的UILabel
是您看到的contentView
被截断。
答案 0 :(得分:2)
添加约束的方式很可能是导致问题的原因。
您似乎将内容视图的边界限制为与滚动视图相同。在这种情况下,由于约束,不会发生滚动。
这是因为您在self.scrollView
内加入了self.contentView
和tmpViewsDictionary
。
在您链接的教程中,字典仅用于向滚动视图的内容视图中的视图添加约束。它不包括滚动视图或内容视图。
答案 1 :(得分:1)
EUREKA。我愚蠢地设置contentView
的孩子的垂直约束并将其固定在contentView
的底部,因此contentView
被缩短并且没有滚动。
"V:|-300-[wikiTitle]|"
最后"|"
切断了UIScrollView
短片的孩子。
最后,我需要将contentView
的最后一项固定为距离contentView