我已经在IB中创建了NSWindow
,然后以编程方式进行设置:
-(void)viewDidAppear {
// Keep window on top
[self.view.window setLevel:CGWindowLevelForKey(kCGMaximumWindowLevelKey)];
// Keep rounded corners with no title bar
[self.view.window setOpaque:NO];
[self.view.window setStyleMask: NSTitledWindowMask | NSFullSizeContentViewWindowMask];
[self.view.window setMovableByWindowBackground:YES];
[self.view.window setTitlebarAppearsTransparent:YES];
[self.view.window setTitleVisibility:NSWindowTitleHidden];
[self.view.window setShowsToolbarButton:NO];
[self.view.window standardWindowButton:NSWindowFullScreenButton].hidden = YES;
[self.view.window standardWindowButton:NSWindowMiniaturizeButton].hidden = YES;
[self.view.window standardWindowButton:NSWindowCloseButton].hidden = YES;
[self.view.window standardWindowButton:NSWindowZoomButton].hidden = YES;
[self.view.window makeKeyWindow];
}
我希望能够在停靠栏下面拖动并重新定位此NSWindow
。尝试这样做会在释放它时将NSWindow
卡在码头上方,如GIF中所示。
我怎样才能使NSWindow
能够定位在码头下方?
答案 0 :(得分:1)
您可以覆盖-[NSWindow constrainFrameRect:toScreen:]
以约束或不约束您喜欢的内容。要防止窗口受到约束,只需返回未修改的建议框架矩形。
或者,你可以使用无边框窗口而不是带有标题栏的窗口然后隐藏它。系统正在做的是移动窗口,使其标题栏保持在Dock顶部之上。如果它没有标题栏,我就不会这样做,我不会这么想。