NSWindow 位置
NSWindow Location
我正在以编程方式创建需要跨越 2 个屏幕的 window。正在创建的 window 的大小是正确的,但 window 从第一个屏幕的一半开始。我可以将它拖回第一个屏幕的开头,NSWindow 非常适合。
我只需要知道 window 的起点哪里出了问题。
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!)
}
您正在设置内容矩形,但没有设置框架。边框是 window 在 屏幕坐标 中占据的矩形。要移动 window,您可以 setFrameOrigin()
或 setFrameTopLeftPoint()
。
我正在以编程方式创建需要跨越 2 个屏幕的 window。正在创建的 window 的大小是正确的,但 window 从第一个屏幕的一半开始。我可以将它拖回第一个屏幕的开头,NSWindow 非常适合。
我只需要知道 window 的起点哪里出了问题。
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!)
}
您正在设置内容矩形,但没有设置框架。边框是 window 在 屏幕坐标 中占据的矩形。要移动 window,您可以 setFrameOrigin()
或 setFrameTopLeftPoint()
。