将一个透明的 NSWindow 永久放置在另一个 NSWindow 之上
我想在 NSWebView
之上放置一些 UI 控件,并且由于这个问题“ https://stackoverflow.com/questions/9120868/video- in-nswebview-hides-views-on-top-of-the-nswebview " 我现在想添加一个“透明”NSWindow
,因此无需关闭按钮等,在我的 NSWebView
之上,因此,在我当前的 NSWindow
之上。
我怎样才能实现这一点并确保这个“覆盖窗口”保持在原位,即使我移动底层窗口?
编辑::虽然 @dzolanta 的方法工作正常,但我想知道是否可以通过使用 NSWindowController
来实现,这将允许我正确使用 Outlet 等。
I want to have some UI controls on top of a NSWebView
and because of this problem " https://stackoverflow.com/questions/9120868/video-in-nswebview-hides-views-on-top-of-the-nswebview " I now want to add a "transparent" NSWindow
, so without the close buttons etc., on top of my NSWebView
, hence, on top of my current NSWindow
.
How can I achieve this and make sure that this "overlay window" stays in place, even if I move the underlying window?
EDIT:: While @dzolanta's approach works fine, I wonder if it is possible to do it by using an NSWindowController
which would allow me to properly use Outlets etc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
子窗口就是您所需要的。
使用
NSBorderlessWindowMask
创建NSWindow
并使用- setOpaque:
和- setBackgroundColor:
方法将其定义为透明。然后将新创建的窗口添加为包含NSWebView
实例的窗口的子窗口(使用NSWindow
的- addChildWindow:ordered:
方法)。移动父窗口将自动导致子窗口移动。更新工作代码:
Child window is what you need.
Create
NSWindow
withNSBorderlessWindowMask
and define it to be transparent using- setOpaque:
and- setBackgroundColor:
methods. Then add newly created window as a child of window containing an instance ofNSWebView
(usingNSWindow
's- addChildWindow:ordered:
method). Moving parent window will automatically cause child window to move.Update with working code:
使用窗口控制器的 Swift 3 版本:
Swift 3 version using window controller: