Как расположить и расположить каскад новых окон документов в левом верхнем углу экрана? - PullRequest
0 голосов
/ 16 апреля 2019

Когда я создаю новый проект на основе документов с раскадровкой в ​​XCode и запускаю его, новое окно располагается где-то в нижней половине экрана.

Это потому, что Начальная позиция установлена ​​в этом месте экрана с пропорциональными соотношениями.

Теперь, Я хочу, чтобы мои окна начинались слева вверху, например в фиксированном положении 20x20 слева от строки меню. Кажется, настройки в Интерфейсном Разработчике не обеспечивают этого. Он либо относительный (тогда положение меняется в зависимости от размера экрана), либо абсолютный, но без возможности определить расстояние от верхней части экрана до верхней части окна.

Кроме того, мне все еще нужно каскадировать новые окна, т. Е. Не устанавливать каждое новое окно размером 20x20, а иметь дополнительные каскадные.

1 Ответ

0 голосов
/ 16 апреля 2019
  1. Создайте подкласс из NSWindowController и назначьте его в качестве оконного контроллера в IB.

  2. В этом подклассе перезаписать windowDidLoad:

- (void)windowDidLoad {
    [super windowDidLoad];

    self.shouldCascadeWindows = YES;

    // Position at top left corner of main screen
    NSWindow *w = self.window;
    NSPoint pos = NSMakePoint (20, 40); // this is where the 1st window appears
    pos.y = NSScreen.mainScreen.frame.size.height - w.frame.size.height - pos.y;
    [w setFrame:CGRectMake(pos.x, pos.y, w.frame.size.width , w.frame.size.height) display:NO];
}
...