调整UIStackView
中的许多视图以适合堆栈。视图初始化时没有帧,因为它们由堆栈视图调整大小。有没有一种方法可以在堆栈视图调整大小后获得视图的大小?
答案 0 :(得分:3)
UIStackView.layoutSubviews()
完成后,尺寸可用。您可以继承UIStackView
并覆盖layoutSubviews
:
class MyStackView: UIStackView {
override func layoutSubviews() {
super.layoutSubviews()
print("arrangedSubviews now have correct frames")
// Post a notification...
// Call a method on an outlet...
// etc.
}
}
答案 1 :(得分:1)
是的。在您视图的downloadfile.pdf
中。
但是,您需要先使用layoutSubviews()
强制UIStackView进行布局,然后再使用其大小。
例如:
stack.layoutIfNeeded()
答案 2 :(得分:0)
我认为获得Stackview的子视图框架的更好方法是使用convert
。
yourStackView.convert(viewInsideStackView.frame to: parentView)
这将在viewInsideStackView
的坐标系中返回parentView
个框架。