Как разместить NSPanel в центре окна приложения - PullRequest
1 голос
/ 01 августа 2020

Я новичок в разработке Macos, и в Интернете почти нет информации, но я не могу понять, как расположить NSpanel в центре верхней части окна приложения. Он открывается в центре всего экрана.

let dialog = NSOpenPanel()
            dialog.title = "Choose a file!"
            dialog.showsResizeIndicator = true;
            dialog.showsHiddenFiles = false;
            dialog.allowsMultipleSelection = false;
            dialog.canChooseDirectories = false;
            dialog.allowedFileTypes = ["py"];
            dialog.isFloatingPanel = false;

это мой текущий код

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Вы можете разместить панель в определенных c координатах, если вы создаете подкласс NSOpenPanel и переопределяете метод «center».

Размещение панели в верхнем левом углу экрана:

class MyOpenPanel: NSOpenPanel {    
override func center() {
    let rect = self.screen?.frame
    self.setFrameOrigin(NSPoint(x: 0, y: rect!.height - self.frame.height))
}

}

0 голосов
/ 01 августа 2020

Вы можете сделать следующее

let dialog = NSOpenPanel()
    dialog.title = "Choose a file!"
    dialog.showsResizeIndicator = true;
    dialog.showsHiddenFiles = false;
    dialog.allowsMultipleSelection = false;
    dialog.canChooseDirectories = false;
    dialog.allowedFileTypes = ["py"];

// here `window` is your document or main window (eg: `NSApp.mainWindow!`, etc.)
dialog.beginSheetModal(for: window) { result in
    if result == .OK {
        // do read a file
    }
}
...