我需要直接向窗口添加一个视图。我可以通过UIApplication访问AppDelegate上的窗口对象来实现这一点。我打算让这段代码尽可能地可重用,尽管这使得该方法毫无帮助。如何在不使用AppDelegate的情况下以编程方式访问UIWindow?
我正在用Swift进行编码,但Objective-C示例可能也会有所帮助。
好吧,我自己想好了。你可以这样访问它:
var window : UIWindow = UIApplication.sharedApplication().keyWindow
Swift 5:
var window : UIWindow = UIApplication.shared.keyWindow
请注意,keyWindow
在iOS 13.0中已弃用。如果您的目标是iOS 13.0或更高版本,请参阅此。
任何视图都有对当前窗口的引用。
在UIViewController中:
self.view.window
以下内容适用于Swift 4,并将安全地打开UIWindow
,这样就不需要强制铸造:
if let window = UIApplication.shared.keyWindow {
// Do stuff
}
Swift 3版本:
let window :UIWindow = UIApplication.shared.keyWindow!
您获得的第一个窗口带有:
let window = UIApplication.shared.windows[0]