NSWindow Расположение - PullRequest
       32

NSWindow Расположение

2 голосов
/ 28 октября 2019

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

Мне просто нужно знать, где я ошибаюсь, с точки зрения начальной точки для окна.

    func createNewWindow() {
    let bannerWidth = NSScreen.screens[0].frame.width * 2
    let bannerHeight = NSScreen.screens[0].frame.height
    let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: bannerWidth, height: bannerHeight))
    let newWindow = NSWindow(contentRect: rect, styleMask: [.closable], backing: .buffered, defer: false)
    let storyboard = NSStoryboard(name: "Main", bundle: nil).instantiateController(withIdentifier: "ExternalScreen") as? NSViewController
    let window = storyboard?.view
    newWindow.styleMask.update(with: .resizable)

    NSMenu.setMenuBarVisible(false)
    newWindow.title = "New Window"
    newWindow.isOpaque = false
    newWindow.isMovableByWindowBackground = true
    newWindow.backgroundColor = NSColor(calibratedHue: 0, saturation: 1.0, brightness: 0, alpha: 0.7)
    newWindow.toggleFullScreen(true)
    newWindow.makeKeyAndOrderFront(nil)
    newWindow.toolbar?.isVisible = false
    newWindow.contentView?.addSubview(window!)
} 

1 Ответ

2 голосов
/ 28 октября 2019

Вы устанавливаете прямоугольник содержимого, но не устанавливаете фрейм. Рамка - это прямоугольник, который занимает окно в экранных координатах . Чтобы переместить окно, вы можете setFrameOrigin() или setFrameTopLeftPoint().

...