使用UIScrollView(Swift)中的动态内容调整UiView高度

时间:2015-05-22 14:44:21

标签: ios swift interface-builder

我在UIScrollView中有UIView,并从Interface Builder连接它们:

@IBOutlet weak var articleScroll: UIScrollView!
@IBOutlet weak var articleSubview: UIView!

我有动态内容进入UIView,我想要将其高度绘制为与内容一样大(以便滚动)。我认为使用.last来查找origin.y结合内容的高度可以做到:

var scroll = self.articleSubview
var lastItem = scroll.subviews.last as! UIView
var lastOriginY = lastItem.frame.origin.y
var lastHeight = lastItem.frame.size.height
var finalHeight = lastOriginY+lastHeight

    scroll.frame = CGRectMake(0 , 0, lastItem.frame.size.width, finalHeight)

构建成功但没有滚动。我尝试添加:

articleScroll.userInteractionEnabled = true

但它并没有什么不同。我做错了什么?

更新

它已经解决了。必须调整实际滚动视图的大小,而不是子视图。不要使用scroll.frame,而是使用#34; contentSize"在UIScrollView上是要走的路。:

self.articleScroll.contentSize = CGSizeMake(lastItem.frame.size.width, finalHeight)

2 个答案:

答案 0 :(得分:3)

UIScrollView的可滚动性(是一个单词?)取决于其contentSize与其边界大小的关系。我们的想法是让contentSize拥抱内容;如果它大于滚动视图的边界大小,则用户可以滚动。

您的代码未在任何地方设置contentSize。它需要!

答案 1 :(得分:0)

调整滚动大小,滚动视图有一个名为scroll.scrollRectToVisible(<rect: CGRect>, animated: <Bool>)的方法 滚动到框架。