我有一个scrollView
,里面放了stackView
。 scrollView
被约束为rootview
。堆栈视图将显示xib视图。
xib视图的长度都不同。
xib视图分别标记为simpleVC0
和simpleVC1
。 simpleVC0
的长度为2500,simpleVC1
的长度为1000。
我的问题是,当xib视图显示在堆栈视图中时,scrollView
的长度不会更改为所显示的xib视图的长度。
就像显示了xib视图,但是滚动视图被锁定为特定长度。
这是simpleVC0
xib视图。运行时紧随其后。当我尝试滚动时,不允许我滚动到xib视图的底部。它似乎切断了xib视图一定的长度。
正确地说这可能是必须在代码中解决的问题?还是可以解决约束带来的灵魂。
我尝试过自动布局约束,但是它们没有起作用。
我在所有四个方面都将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
}
}
答案 0 :(得分:1)
要将UIStackView
与UIScrollView
一起使用,您需要允许堆栈视图根据其内容扩展其高度。
在情节提要中进行布局时,给堆栈视图一个高度限制(以满足IB的要求),但给该高度限制一个低的优先级。
然后,当添加排列的子视图时,堆栈视图将垂直增长。
根据您显示的图像,这是一个完整的示例:https://github.com/DonMag/XIBsInScrollView
答案 1 :(得分:0)
您必须在代码中修改scrollView的contentSize属性。我不知道如何使用情节提要处理它,但是您可以在scrollView上做一个出口,并在每次更改时(每次添加或删除其中的内容)计算新的高度
scrollView.contentSize = CGSize(width:yourNewW, height:yourNewH)