没有标题栏的浮动窗口将不会到达屏幕顶部

问题描述

我的Mac应用使用浮动窗口,没有标题栏,可以通过拖动来移动标题栏。

NSRect frame = NSMakeRect(500,950,600,100);
        
self.lbWindow  = [[lbCustomWindow alloc] initWithContentRect:frame
                       styleMask:NSWindowStyleMaskBorderless
                       backing:NSbackingStoreBuffered
                       defer:NO];
        
[self.lbWindow setopaque:NO];
[self.lbWindow setBackgroundColor:[NSColor clearColor]];
[self.lbWindow setHasShadow:YES];
[self.lbWindow setReleasedWhenClosed:FALSE];

但是,无法将该窗口放置(例如,在该位置创建),也不能将其移动(通过拖动)到顶部菜单栏的正下方,它只能到达其下方约30像素-恰好是普通的窗口标题栏-基本上,该窗口似乎在垂直方向上受到约束,就像该窗口具有标题栏一样。

(Y坐标“ 950”是我可以放置的窗口的最大值,结果显示为下图。)

This is the highest the window can be placed or moved on screen

我希望这样做就像没有标题栏一样,并且能够放置它,以便窗口的顶部边缘位于菜单栏的下方。

(我没有包含自定义窗口的实现,但是除了拖动支持之外,没有太多其他东西了-并不是造成拖动的约束,就像刚开始以编程方式最初放置窗口时一样。)

有想法吗?

解决方法

好的,刚发布后,我就知道了原因(典型)。 :)

(透明)窗口创建成功,但是当我向其添加子视图时,由于某种原因(重构的旧代码),它正在添加的标题栏的高度低于窗口顶部。

(当您使窗口不透明时很明显)。

所以只需要重新定位视图就可以了。