子窗口,你需要做的吧。
創建NSWindow
與NSBorderlessWindowMask
並使用- 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];
我設法顯示窗口,這也是對我的視頻流的頂部。唯一沒有奏效的想法是,窗口在調整大小時應該與包含窗口一起展開。 – Besi 2012-02-03 16:32:33
作爲NSWindowDidResizeNotification的觀察者,實現該功能,將窗口控制器(或另一個對象,取決於您的應用程序體系結構)註冊。通知選擇器應該指定一種方法,它根據父框架改變子窗口的框架(就像創建覆蓋窗口時一樣)。如果您願意,也可以使用NSWindowDelegate的--windowDidResize:方法。 – dzolanta 2012-02-03 17:16:27