Установка положения NSWindow на текущем экране

#objective-c #nswindow #nswindowcontroller #nspoint

#цель-c #nswindow #nswindowcontroller #nspoint

Вопрос:

Я новичок в objective-c.Я создал главное окно, которое я хочу отобразить в правой нижней части текущего экрана. Я попробовал следующий код

 - (void)windowDidLoad
{
    NSPoint pos;

    pos.x = [[NSScreen mainScreen] visibleFrame].origin.x   [[NSScreen mainScreen] visibleFrame].size.width - [mywindow frame].size.width ;

    pos.y = [[NSScreen mainScreen] visibleFrame].origin.y   [[NSScreen mainScreen] visibleFrame].size.height - [mywindow frame].size.height;

    [mywindow setFrameTopLeftPoint:pos];

}
  

что в нем не так? Как это решить?

Комментарии:

1. @student: Нет, это не работает.

Ответ №1:

Использовать

 NSPoint pos; 
pos.x = [[NSScreen mainScreen] frame].size.width - [mywindow frame].size.width ;

pos.y = 0.0f;

[self.window setFrame:CGRectMake(pos.x, pos.y, [mywindow frame].size.width , [mywindow frame].size.height) display:YES];
  

Потому что [[NSScreen MainScreen] frame].origin.x всегда будет равен 0.
И в случае Mac экран начинается снизу.

Комментарии:

1. На самом деле это неверно, mainScreen это экран, на котором есть MainWindow; который может быть или не быть экраном, у которого начало x равно 0. Исходный экран (тот, который содержит 0,0, является [[NSScreen screens] firstObject]