我正在尝试使用NSWindow模拟NSMenu的行为。但是,当我尝试将窗口锚定在状态项下方(位于屏幕顶部)时,我意识到默认情况下,所有窗口在窗口顶部和状态栏之间的间距为1像素。这是我的意思:NSWindow位于屏幕顶部,具有意外的空白
我在github上发现了一个过时的实现,该实现设法在状态栏下方创建了一个没有此边距的自定义窗口,但是我很难弄清楚实现是如何实现的。https://github.com/SquaredTiki/JGMenuWindow
如何摆脱页边空白,使窗口紧贴状态栏?
找到了解决方案!
override func constrainFrameRect(frameRect: NSRect, toScreen screen: NSScreen?) -> NSRect {
return frameRect
}
覆盖您的NSWindow子类。现在,您可以按任何希望的方式移动NSWindow,它将可以移到菜单栏上方。这是因为通常在移动窗口之前会调用此函数,以检查建议的新窗口位置是否其上边缘位于屏幕上。如果不是这种情况,该功能将返回一个调整的位置,该位置的顶部边缘确实位于屏幕上。通过重写此函数并返回frameRect,您不会对新建议的窗口位置进行任何检查或重新调整,而是告诉窗口它可以移动到任何位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句