gpt4 book ai didi

objective-c - 将一个透明的 NSWindow 永久地放在另一个 NSWindow 之上

转载 作者:太空狗 更新时间:2023-10-30 03:30:38 28 4
gpt4 key购买 nike

我想在 NSWebView 上添加一些 UI 控件,由于这个问题“https://stackoverflow.com/questions/9120868/video-in-nswebview-hides-views-on-top-of-the-nswebview”,我现在想添加一个“透明的”NSWindow,所以没有关闭按钮等,在我的 NSWebView 之上,因此,在我当前的 NSWindow 之上。

我怎样才能做到这一点并确保这个“覆盖窗口”保持原位,即使我移动了底层窗口?

编辑::虽然@dzolanta 的方法工作正常,但我想知道是否可以通过使用 NSWindowController 来实现,这将使我能够正确使用 Outlets 等。

最佳答案

子窗口就是您所需要的。

使用 NSBorderlessWindowMask 创建 NSWindow 并使用 - setOpaque:- setBackgroundColor: 方法将其定义为透明.然后将新创建的窗口添加为包含 NSWebView 实例的窗口的子窗口(使用 NSWindow-addChildWindow:ordered: 方法)。移动父窗口会自动导致子窗口移动。

使用工作代码更新:

CGRect wRect = self.window.frame;
NSView *contentView =self.window.contentView;
CGRect cRect = contentView.frame;

CGRect rect = CGRectMake(wRect.origin.x, wRect.origin.y, cRect.size.width, cRect.size.height);
NSWindow *overlayWindow = [[NSWindow alloc]initWithContentRect:rect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
overlayWindow.backgroundColor = [NSColor redColor];
[overlayWindow setOpaque:NO];
overlayWindow.alphaValue = 0.5f;

[self.window addChildWindow:overlayWindow ordered:NSWindowAbove];

关于objective-c - 将一个透明的 NSWindow 永久地放在另一个 NSWindow 之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9128134/

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