我在IB中为窗口设置了autosavename。在窗口的windowcontroller中我正在做 -
override func windowDidLoad() {
super.windowDidLoad()
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
self.window?.setFrameUsingName("TestWindowContollerAutoSaveName")
}
这很简单。如果我在单个屏幕上使用它,它的效果非常好。但如果我使用多个屏幕,则初始窗口位置始终在主屏幕上。它不记得应用程序退出的屏幕。 我也尝试过(没有运气) -
override func windowDidLoad() {
super.windowDidLoad()
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
let frameString = self.window?.stringWithSavedFrame
if let _ = frameString{
self.window?.setFrameFromString(frameString!)
}
}
如何正确使用 setFrameUsingName 方法?谢谢你的帮助。
答案 0 :(得分:0)
这是因为所有UIView都嵌入在UIWindow中。每个UIView,或者'屏幕'正如你所说的那样,是UIWindow的子视图。您可以将UIWindow视为UIView的父级。如果您只想编辑一个UIView,那么请考虑使用UIView。
您可以阅读有关View and Window Architecture的更多信息。他们在那里有一个有用的图表,也可以帮助您看到我的解释。