使用 UIScrollView 中的动态内容调整 UiView 高度 (Swift)
Resizing UiView Height With Dynamic Content in UIScrollView (Swift)
我在 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
但这并没有什么不同。我做错了什么?
更新:
已解决。必须调整实际滚动视图的大小,而不是子视图。不要在 UIScrollView 上使用 scroll.frame,而是使用 "contentSize"。:
self.articleScroll.contentSize = CGSizeMake(lastItem.frame.size.width, finalHeight)
调整滚动的大小,滚动视图有一个方法叫做 scroll.scrollRectToVisible(<rect: CGRect>, animated: <Bool>)
滚动到框架。
UIScrollView 的可滚动性(这是一个词吗?)取决于其 contentSize
与其边界大小的关系。这个想法是让 contentSize
拥抱内容;如果它大于滚动视图的边界大小,用户可以滚动。
您的代码没有在任何地方设置 contentSize
。它需要!
我在 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
但这并没有什么不同。我做错了什么?
更新:
已解决。必须调整实际滚动视图的大小,而不是子视图。不要在 UIScrollView 上使用 scroll.frame,而是使用 "contentSize"。:
self.articleScroll.contentSize = CGSizeMake(lastItem.frame.size.width, finalHeight)
调整滚动的大小,滚动视图有一个方法叫做 scroll.scrollRectToVisible(<rect: CGRect>, animated: <Bool>)
滚动到框架。
UIScrollView 的可滚动性(这是一个词吗?)取决于其 contentSize
与其边界大小的关系。这个想法是让 contentSize
拥抱内容;如果它大于滚动视图的边界大小,用户可以滚动。
您的代码没有在任何地方设置 contentSize
。它需要!