Swift 中的容器视图边界问题

Container View bounds issue in Swift

我正在编写一个可以获取容器视图的高度和宽度的函数:

// container view's UIViewController
class SelectionView: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func getBounds -> (CGFloat,CGFloat){
        let x = self.view.bounds.width / 5
        let y = self.view.bounds.height / 15
        return x,y
    }

}

我写了一个按钮来调用这个 getBounds() 并且它运行良好,但是当我把它放在 viewDidLoad() 函数中时

override func viewDidLoad() {
    super.viewDidLoad()
    getBounds()
}

getBounds() returns 我的高度和宽度不同,显然不是这个容器视图的边界。

我很确定我已将此 class 链接到容器视图!

viewDidLoad 中未设置视图布局。因此,尚未完成任何大小调整,并且您的尺寸是错误的(可能与 Storyboard/Xib 中声明的相同)。

getBounds移动到viewWillLayoutSubviewsviewWillAppear中,它将正常工作。请注意,这些方法不会只被调用一次 ;)

视图尚未在 viewDidLoad 中布局,您可能需要在稍后的方法或 viewDidLayoutSubviews 中捕获它。