【发布时间】:2015-01-02 10:03:55
【问题描述】:
我有一个单窗口应用程序,它的屏幕上有一些复选框。
我使用NSUserDefaults 不仅存储复选框的状态,还存储主窗口的宽度、高度和位置 (x/y)。
我的问题是找到正确的事件来读取和设置窗口属性。
目前我在:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// read preferences
UserPreferences *userPrefs = [[UserPreferences alloc] init];
NSRect oldFrame = [window frame];
if( [userPrefs MainWindowWidth] > 0)
oldFrame.size.width = [userPrefs MainWindowWidth];
if( [userPrefs MainWindowHeight] > 0)
oldFrame.size.height = [userPrefs MainWindowHeight];
if( [userPrefs MainWindowTop] > 0)
oldFrame.origin.y = [userPrefs MainWindowTop];
if( [userPrefs MainWindowLeft] > 0)
oldFrame.origin.x = [userPrefs MainWindowLeft];
// set windows properties
[window setFrame:oldFrame display:YES animate:NO];
}
它可以工作,但屏幕首先显示默认大小,然后更改为存储的大小,因此在视觉上有点打嗝。这告诉我在事件链中设置这些参数为时已晚。
我也尝试了 awakefromnib,但这似乎太早了,因为设置宽度和高度被简单地忽略了。
哪个事件适合插入此代码以在窗口显示在屏幕上之前重置窗口?
任何建议将不胜感激。万事开头难。
谢谢。
【问题讨论】: