gpt4 book ai didi

swift - 将 NSWindow 放置在屏幕顶部,没有 1 像素边距。

转载 作者:搜寻专家 更新时间:2023-11-01 07:26:26 26 4
gpt4 key购买 nike

我正在尝试使用 NSWindow 模拟 NSMenu 的行为。但是,当我尝试将窗口固定在状态项下方(屏幕顶部)时,我意识到默认情况下所有窗口在窗口顶部和状态栏之间都有 1 像素的边距。这就是我的意思: NSWindow at top of screen with unintended margin

我在 github 上发现了一个过时的实现,它设法在状态栏下方创建一个自定义窗口而没有这个边距,但我很难弄清楚该实现是如何实现这一点的。 https://github.com/SquaredTiki/JGMenuWindow

我怎样才能去掉边距,使窗口紧贴状态栏?

最佳答案

找到解决方案!

override func constrainFrameRect(frameRect: NSRect, toScreen screen: NSScreen?) -> NSRect {
return frameRect
}

在您的 NSWindow 子类中覆盖。现在您可以以任何您希望的方式移动 NSWindow,它将能够移动到菜单栏上方。这是因为此函数通常在窗口移动之前调用,以检查建议的新窗口位置是否使其顶部边缘位于屏幕上。如果不是这种情况,该函数将返回一个调整后的位置,在该位置上边缘确实位于屏幕上。通过覆盖此函数并返回 frameRect,您不会对新建议的窗口位置进行任何检查或重新调整,而是告诉窗口它可以移动到任何地方。

关于swift - 将 NSWindow 放置在屏幕顶部,没有 1 像素边距。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35808924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com