Swift iOS - 如何将子视图添加到 Window 的中心?

Swift iOS -How to Add Subview to Window's Center?

我有一个 activity 指标显示在 iPhone 和 iPad 上。在 iPad 分屏模式下,它会呈现给调用它的视图的任何一侧。相反,我希望它显示在 middle/center 和 window 的屏幕上。如果我这样做,无论是在纵向 iPhone 还是在分屏模式 iPad 上,它都将始终位于屏幕中央。

我该怎么做?

MyView: UIViewController{

let actInd = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)


@IBAction fileprivate func buttonPressed(_ sender: UIButton) {

      guard let window = UIApplication.shared.keyWindow else { return }
      //how to add actInd as subview to the window' screen?
      actInd.startAnimating()
}

}

Window 是 UIView 的子类。只需将它添加为子视图,就像将一个视图添加到另一个视图一样。但请记住 window 在您的应用程序中共享,因此每次添加它都会消耗内存,在您的工作完成后将其删除。 如果你想把它放在 window 的中心,你可以使用 autoResizingMask 或者给它添加约束。

很简单。关闭自动调整大小蒙版。添加add actInd到window,然后设置中心anchors.

actInd.translatesAutoresizingMaskIntoConstraints = false

window.addSubview(actInd)
actInd.centerXAnchor.constraint(equalTo: window.centerXAnchor).isActive = true
actInd.centerYAnchor.constraint(equalTo: window.centerYAnchor).isActive = true