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