uiscrollview具有动态内容大小和使用约束的问题

时间:2018-10-10 02:59:11

标签: swift uiscrollview constraints ios-autolayout contentsize

我正在使用一个情节提要,对于我的一个视图控制器,我已将uiview更改为uiscrollview(称为mainScrollView)。在此滚动视图中,我还有其他对象(按钮,标签等),以及在运行时创建的UIView(我们将其称为myDataView),并且其高度根据填充的数据而有所不同。在myDataView下面,我有另一个UIView(我们称它为descriptionView),它是固定大小的,并包含对myDataView中数据的描述。

我遇到的问题是我无法将descriptionView放置在mainScrollView的底部。

在情节提要上,我向我的descriptionView添加了一个约束,以“将底部对齐:Superview”。

由于myDataView的大小是在加载要显示的数据后确定的,因此我在以下位置更新其高度:
覆盖func viewDidLayoutSubviews() 在这里,我还更新了mainScrollView.contentSize,以便它可以适合我所有的对象和两个UIView。

问题是,descriptionView放置在错误的位置。它显示在mainScrollView的中间而不是结尾。如果我在viewDidLoad()中放置一个断点并记录mainScrollView.frame,它返回的高度为736,当前contentsize为0。descriptionView.frame(设置的高度为145)为(0.0,583.0,414.0,145.0) 。接下来,当它在viewDidLayoutSubviews()的开始处达到断点时,contentsize的高度现在为466。因此,自然,descriptionView.frame现在显示为(0.0,313.0,414.0,145.0)。所以现在确定myDataView的高度后,我可以设置mainScrollView.contentSize = CGSize(width:self.view.frame.width,height:newTotalHeight),我得到(414.0,1036.0)。

约束是在情节提要板上设置的,最初放置descriptionView后,我无法获取它来重新评估其约束并移至(0.0,891.0,414.0,145.0)。

我尝试手动设置descriptionView的框架,并在其上调用setNeedsLayout()以及任何其他视图,以及进行各种其他操作。

关于我在做什么的任何指针吗?

0 个答案:

没有答案
相关问题