2015-02-19 1 views
1

Я хочу показать новое окно, когда пользователь нажал кнопку в главном окне, но когда я вызвал отдельное окно с помощью makeKeyAndOrderFront, окно появилось далеко от главного окна.Как отобразить NSWindow в главном окне в Cocoa?

Вот что я писал, в подклассе NSViewController:

myWindow = NSWindow() 
myWindow.setFrame(myView.frame, display: true) 
myWindow.contentView = myView 
myWindow.makeKeyAndOrderFront(self) 

Однако, это открывает новое окно за пределами главного окна. Я хочу отобразить его в главном окне, возможно, в центре главного окна (я установил значение .framemyView для размещения по центру).

Так как я могу вызвать новое окно в главном окне? Другими словами, могу ли я указать, где появится новое окно?

ответ

3

Вам нужно будет преобразовать координаты и/или прямоугольник в пространство экрана. NSView и NSWindow предоставляют методы, которые начинаются с «конвертировать», взгляните на них. Иногда вам понадобится цепочка для преобразования из окна просмотра в окно, а затем окна для экрана. Имейте в виду, что окно имеет метод экрана NSScreen и что окно может отображаться на разных экранах разного размера и потенциально охватывать несколько экранов.

+0

О, я просто понял, что, казалось бы, разбросанное окно установлено слева внизу экрана *, а не главного окна * ... Спасибо. – Blaszard

+0

Ну, Mac OS использует нижний левый по умолчанию. У NSWindow есть много удобных методов для установки позиций. – uchuugaka

Смежные вопросы