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

Kho*_*ury 2 uiscrollview ios swift uistackview

我在UIScrollView中使用UIStackView,并且我想确定堆栈视图的高度,以便可以通过编程方式调整滚动视图的高度,以在隐藏子视图时适应。

我在用

stackView.frame.height 
Run Code Online (Sandbox Code Playgroud)

确定堆栈视图的高度。这是被调用的,viewDidLoad()但是无论子视图是否被隐藏,它始终都是从情节提要中获得的高度值。

如何确定身高?

tkt*_*ota 10

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

stackView.layoutIfNeeded()
Run Code Online (Sandbox Code Playgroud)

例:

print(stackView.frame.height) // old height
subview1.isHidden = true
print(stackView.frame.height) // still old height
stackView.layoutIfNeeded()
print(stackView.frame.height) // new height
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参见文档

  • @Khoury,您需要在.layoutIfNeeded()之前*调用setNeedsLayout()`,然后获取框架高度。 (6认同)