>我在滚动视图中有子视图,从底部删除一些子视图后,有一个空白区域,滚动视图仍然保持高度,而不是调整大小。如何解决这个问题?
Scrollview的contentHeight
和contentWidth
是根据其子视图计算的(如果使用自动布局(。如果未使用自动布局,则需要设置其内容大小。
因此,每当您在滚动视图中添加或删除子视图时,您都需要注意其内容高度和内容宽度。
如果您使用的是自动布局,则需要向新添加的视图添加约束,以便滚动视图可以从中计算其内容高度。(在自动布局中,您无需明确设置内容高度以滚动视图(
如果使用框架基布局,则需要将 contentHeight 显式设置为滚动视图。在框架基础布局中,您需要注意滚动视图内容的大小。
为什么滚动视图中有空白?
从滚动视图中删除子视图时,需要调整其内容大小。这意味着它无法计算其内容大小。
你可以使用这一行
self.scrollView.contentSize = CGSize(width: self.view.frame.width, height: (YOURVIEW) - (THEREMOVEDVIEW))
我建议您在删除视图之前必须保存高度,以便以后进行调整。
UIScrollView
不会自动知道其内容的高度。您必须为自己计算高度和宽度,如下所示:
scrollView.contentSize = CGSize(width: self.view.frame.size.width, height: 700)
注意:根据需要更改width
和height
。
您也可以尝试此操作:
let content: CGRect = scrollView.subviews.reduce(into: .zero) { rect, view in
rect = rect.union(view.frame)
}
scrollView.contentSize = content.size