我有一个窗口应用程序,在屏幕上有一些复选框。MAC可可 - 以编程方式设置窗口大小
我使用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,但这似乎太早,因为设置宽度和高度被忽略。
在屏幕上显示之前,哪个事件是正确的插入此代码以重置窗口的权限?
任何意见,将不胜感激。每一个开始都很艰难。
谢谢。
感谢您的回复。我无法找到“开始时显示窗口”,但有“可见于发布”。这是你指的是什么? – Mozzak
所以我试图禁用“可见在启动”,并显示“applicationDidFinishLaunching”窗口。它仍然是闪烁的。它似乎首先加载窗口的默认大小,然后新的大小后。任何其他想法? – Mozzak