问题描述
我的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”是我可以放置的窗口的最大值,结果显示为下图。)
我希望这样做就像没有标题栏一样,并且能够放置它,以便窗口的顶部边缘位于菜单栏的下方。
(我没有包含自定义窗口的实现,但是除了拖动支持之外,没有太多其他东西了-并不是造成拖动的约束,就像刚开始以编程方式最初放置窗口时一样。)
有想法吗?
解决方法
好的,刚发布后,我就知道了原因(典型)。 :)
(透明)窗口创建成功,但是当我向其添加子视图时,由于某种原因(重构的旧代码),它正在添加的标题栏的高度低于窗口顶部。
(当您使窗口不透明时很明显)。
所以只需要重新定位视图就可以了。