如何根据 iPad 模态视图控制器的框架宽度设置按钮的宽度? - Swift 5

How to set a button's width based on an iPad Modal View Controller's frame width? - Swift 5

所以我试图添加一个按钮,它是视图的宽度 - 50 并让它在视图控制器的下部居中。

我就是这样做的:

    purchaseButton.layer.cornerRadius = 14
    purchaseButton.frame = CGRect(x: 0, y: 0, width: self.view.frame.width - 50, height: 50)
    purchaseButton.autoresizingMask = [.flexibleLeftMargin, .flexibleBottomMargin]
    purchaseButton.contentEdgeInsets = UIEdgeInsets(top: 14, left: 0, bottom: 14, right: 0)
    let xPosition: CGFloat = self.view.frame.width / 2.0
    let yPosition: CGFloat = self.view.frame.height / 1.25
    purchaseButton.center = CGPoint(x: xPosition, y: yPosition)

这适用于所有 iPhone 设备和尺寸。但是,对于 iPad 视图是模态视图,我认为 frame.width 是整个 iPad 屏幕尺寸,而不仅仅是较小的视图。这会导致 iPad 设备上的按钮太低和太宽。有什么办法可以获得模态弹出视图控制器的宽度和高度而不是整个设备的框架并使用它来设置按钮大小?

我发现我需要调用 viewWillAppear 中的代码而不是 viewDidLoad 才能获得视图控制器的正确大小。这样做解决了问题!