У меня есть приложение с одним окном, на котором есть некоторые флажки на экране.MAC Cocoa - Программно заданный размер окна
Я использую 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