带有嵌入式 StackView 问题的 ScrollView
ScrollView with embedded StackView issue
我有一个 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
}
}
要将 UIStackView
与 UIScrollView
一起使用,您需要允许堆栈视图根据其内容扩展其高度。
在故事板中进行布局时,为堆栈视图提供高度限制(以满足 IB 的要求),但为该高度限制提供低优先级。
然后,添加排列的子视图时,堆栈视图将垂直增长。
根据您显示的图片,这是一个完整的示例:https://github.com/DonMag/XIBsInScrollView
您必须在代码中修改 scrollView 的 contentSize 属性。我不知道如何用情节提要来处理它,但你可以为你的 scrollView 做一个出口,并在每次它改变时计算新的高度(每次你添加或删除其中的东西)
scrollView.contentSize = CGSize(width:yourNewW, height:yourNewH)
我有一个 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
}
}
要将 UIStackView
与 UIScrollView
一起使用,您需要允许堆栈视图根据其内容扩展其高度。
在故事板中进行布局时,为堆栈视图提供高度限制(以满足 IB 的要求),但为该高度限制提供低优先级。
然后,添加排列的子视图时,堆栈视图将垂直增长。
根据您显示的图片,这是一个完整的示例:https://github.com/DonMag/XIBsInScrollView
您必须在代码中修改 scrollView 的 contentSize 属性。我不知道如何用情节提要来处理它,但你可以为你的 scrollView 做一个出口,并在每次它改变时计算新的高度(每次你添加或删除其中的东西)
scrollView.contentSize = CGSize(width:yourNewW, height:yourNewH)