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

Mat*_*oon 8 frame ios swift uistackview

UIStackView调整a中的许多视图以适合堆栈。视图初始化时没有框架,因为它们由堆栈视图调整大小。有没有办法在堆栈视图调整视图大小后获得视图的大小?

rob*_*off 5

尺寸在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.
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,这并不总是正确的。我遇到过很多情况,在“super.layoutSubviews()”之后排列的子视图的几何形状**不**。在我的特定情况下,我总是不得不在下一个运行循环中检查它们,这很荒谬。 (2认同)