swift 如何在屏幕外创建窗口

h6my8fg2  于 2023-02-28  发布在  Swift
关注(0)|答案(2)|浏览(232)

我正在学习Mac OS开发,我使用Swift和可可创建了一个窗口,我想在屏幕外显示。我的代码如下:

@IBAction func tapShowSplitWindow(_ sender: Any) {
        let initRect = NSRect(x: -100, y: -100, width: 300.0, height: 300.0)

        var window = NSWindow(contentRect: initRect,styleMask: .titled, backing: .buffered, defer: false)
        window.contentView = NSView()
        window.contentView?.wantsLayer = true
        window.contentView?.layer?.backgroundColor = NSColor.red.cgColor
        
        window.makeKeyAndOrderFront(self)
    }

窗口将出现在屏幕的左下角,我期望它在屏幕之外。
为什么?以及如何在外面展示

w46czmvw

w46czmvw1#

window.makeKeyAndOrderFront(self)用于移动屏幕上的窗口。如果您真的希望窗口只显示一半,那么您可以使用setFrameOrigin将其向后移动

window.makeKeyAndOrderFront(self)
window.setFrameOrigin(window.frameRect(forContentRect:initRect).origin)
col17t5w

col17t5w2#

// Reference: https://stackoverflow.com/questions/35808924/placing-nswindow-at-top-of-screen-without-1-pixel-margin
class FullscreenWindow: NSWindow {
    override func constrainFrameRect(_ frameRect: NSRect, to screen: NSScreen?) -> NSRect {
        print("Rect: \(frameRect)")
        return NSRect(origin: .zero, size: frameRect.size)
    }
}

您可以覆盖constrainFrameRect来设置窗口的矩形。

相关问题