Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在子视图被隐藏后以编程方式确定视图的高度_Ios_Swift_Uiscrollview_Uistackview - Fatal编程技术网

Ios 如何在子视图被隐藏后以编程方式确定视图的高度

Ios 如何在子视图被隐藏后以编程方式确定视图的高度,ios,swift,uiscrollview,uistackview,Ios,Swift,Uiscrollview,Uistackview,我在UIScrollView中使用UIStackView,我想确定堆栈视图的高度,以便可以通过编程方式调整scrollview的高度,以适应隐藏子视图的情况 我正在使用 stackView.frame.height 以确定堆栈视图高度。这在viewdiload()中调用,但无论子视图是否隐藏,它在情节提要中始终是相同的高度值 如何确定高度?在对任何视图进行布局更改后,它必须在功能完成后重新计算其框架。要立即获取更新的帧,请调用: stackView.layoutIfNeeded() 例如:

我在UIScrollView中使用UIStackView,我想确定堆栈视图的高度,以便可以通过编程方式调整scrollview的高度,以适应隐藏子视图的情况

我正在使用

stackView.frame.height 
以确定堆栈视图高度。这在
viewdiload()
中调用,但无论子视图是否隐藏,它在情节提要中始终是相同的高度值


如何确定高度?

在对任何视图进行布局更改后,它必须在功能完成后重新计算其框架。要立即获取更新的帧,请调用:

stackView.layoutIfNeeded()
例如:

print(stackView.frame.height) // old height
subview1.isHidden = true
print(stackView.frame.height) // still old height
stackView.layoutIfNeeded()
print(stackView.frame.height) // new height

有关详细信息,请参阅。

谢谢您的回答,在.layoutifneedd()之后,我仍然收到旧的高度。@Khoury您是否尝试过完全删除排列的子视图(而不仅仅是隐藏它)以查看其是否会更改高度?我刚刚将其从隐藏改为.removeFromSuperview(),高度仍然没有变化?@Khoury您需要在
之前调用
setNeedsLayout()
。layoutifneed()
,然后获取帧高度。
viewDidLoad
太早了。尝试查看显示的视图。