gpt4 book ai didi

macos - 如何查明 NSWindow 的任何部分当前是否可见(不仅仅是订购的)

转载 作者:行者123 更新时间:2023-12-03 16:07:32 26 4
gpt4 key购买 nike

我有一个每秒更新一次的 NSWindow 以显示当前时间。

此绘图需要占用大量处理器资源,我希望避免在窗口完全被其他窗口遮挡时执行此操作。

不幸的是,[NSWindow isVisible] 并不显示窗口在屏幕上是否实际可见,而仅显示它当前是否在屏幕上。这意味着如果该窗口位于窗口列表中但完全被其他窗口 isVisible == YES 遮挡,我的自定义drawRect将被调用,并且我最终将所有内容绘制到从未使用过的缓冲区中。

有没有办法检测窗口及其内容在屏幕上是否实际上可见?

任何帮助将不胜感激。

最佳答案

在 10.9 上,您可以使用 NSWindow 的 -occlusionState 和关联的委托(delegate)方法。

来自发行说明:

Windows are considered occluded if their entire content, including title bar and tool bar, is 100% covered by another opaque window. Windows are also occluded if they are ordered off screen, minimized to the dock, or on another space. Partial occlusion counts as “visible.”

示例:

- (void)windowDidChangeOcclusionState:(NSNotification *)notification
{
if ([[notification object] occlusionState] & NSWindowOcclusionStateVisible) {
// visible
} else {
// occluded
}
}

关于macos - 如何查明 NSWindow 的任何部分当前是否可见(不仅仅是订购的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14218625/

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