ScrollView带有嵌入式StackView问题

时间:2019-03-28 14:15:37

标签: xcode constraints scrollview stackview

我有一个scrollView,里面放了stackViewscrollView被约束为rootview。堆栈视图将显示xib视图。

xib视图的长度都不同。 xib视图分别标记为simpleVC0simpleVC1simpleVC0的长度为2500,simpleVC1的长度为1000。

我的问题是,当xib视图显示在堆栈视图中时,scrollView的长度不会更改为所显示的xib视图的长度。 就像显示了xib视图,但是滚动视图被锁定为特定长度。

这是simpleVC0 xib视图。运行时紧随其后。当我尝试滚动时,不允许我滚动到xib视图的底部。它似乎切断了xib视图一定的长度。 正确地说这可能是必须在代码中解决的问题?还是可以解决约束带来的灵魂。 我尝试过自动布局约束,但是它们没有起作用。

enter image description here

enter image description here An example of how far down i can scroll (note the xib view is cut off as it only shows a certain amount of green.) enter image description here

enter image description here

我在所有四个方面都将scrollView约束为rootview。 加载根视图后,将使用以下代码建立xib:

    //Different subViews for ingredients and steps
    if counter == 0 {
        simpleViewX = SimpleVC0().view
        simpleViewY = SimpleVC1().view
        stack.addArrangedSubview(simpleViewX)
        stack.addArrangedSubview(simpleViewY)
    }

通过更改分段视图控制器的值可以隐藏视图。如下所示:

    @IBAction func tabselected(_ sender: Any) {
    switch (sender as AnyObject).selectedSegmentIndex {
    case 0:
        simpleViewY.isHidden = true
        simpleViewX.isHidden = false

        break
    case 1:
        simpleViewX.isHidden = true
        simpleViewY.isHidden = false

        break
    case 2:
        //calledvideo in array is the value of the counter.
        calledVideo = vids[counter]
        geturl()
        break
    default:
        break
    }
    }

2 个答案:

答案 0 :(得分:1)

要将UIStackViewUIScrollView一起使用,您需要允许堆栈视图根据其内容扩展其高度。

在情节提要中进行布局时,给堆栈视图一个高度限制(以满足IB的要求),但给该高度限制一个低的优先级。

然后,当添加排列的子视图时,堆栈视图将垂直增长。

根据您显示的图像,这是一个完整的示例:https://github.com/DonMag/XIBsInScrollView

答案 1 :(得分:0)

您必须在代码中修改scrollView的contentSize属性。我不知道如何使用情节提要处理它,但是您可以在scrollView上做一个出口,并在每次更改时(每次添加或删除其中的内容)计算新的高度

scrollView.contentSize = CGSize(width:yourNewW, height:yourNewH)