查找由UIStackView swift调整的视图大小

时间:2015-11-06 03:01:20

标签: ios swift frame uistackview

调整UIStackView中的许多视图以适合堆栈。视图初始化时没有帧,因为它们由堆栈视图调整大小。有没有一种方法可以在堆栈视图调整大小后获得视图的大小?

3 个答案:

答案 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个框架。